home *** CD-ROM | disk | FTP | other *** search
/ Champak 141 / (Vol 141) Oct 17 2011.iso / Games / Clueless.swf / scripts / fl / video / UIManager.as < prev    next >
Encoding:
Text File  |  2011-10-17  |  149.1 KB  |  3,648 lines

  1. package fl.video
  2. {
  3.    import flash.display.*;
  4.    import flash.events.*;
  5.    import flash.geom.ColorTransform;
  6.    import flash.geom.Matrix;
  7.    import flash.geom.Rectangle;
  8.    import flash.net.URLRequest;
  9.    import flash.utils.*;
  10.    
  11.    use namespace flvplayback_internal;
  12.    
  13.    public class UIManager
  14.    {
  15.       
  16.       public static const VOLUME_BAR_HIT:int = 12;
  17.       
  18.       flvplayback_internal static var layoutNameToIndexMappings:Object = null;
  19.       
  20.       public static const MUTE_OFF_BUTTON:int = 10;
  21.       
  22.       flvplayback_internal static var buttonSkinLinkageIDs:Array = ["upLinkageID","overLinkageID","downLinkageID"];
  23.       
  24.       public static const BACK_BUTTON:int = 5;
  25.       
  26.       flvplayback_internal static var layoutNameArray:Array = ["pause_mc","play_mc","stop_mc",null,null,"back_mc","forward_mc",null,null,null,null,null,null,"playpause_mc","fullScreenToggle_mc","volumeMute_mc","bufferingBar_mc","seekBar_mc","volumeBar_mc","seekBarHandle_mc","seekBarHit_mc","seekBarProgress_mc","seekBarFullness_mc","volumeBarHandle_mc","volumeBarHit_mc","volumeBarProgress_mc","volumeBarFullness_mc","progressFill_mc"];
  27.       
  28.       public static const FORWARD_BUTTON:int = 6;
  29.       
  30.       public static const STOP_BUTTON:int = 2;
  31.       
  32.       public static const NUM_BUTTONS:int = 13;
  33.       
  34.       public static const NORMAL_STATE:uint = 0;
  35.       
  36.       public static const SEEK_BAR_HANDLE:int = 3;
  37.       
  38.       public static const PLAY_BUTTON:int = 1;
  39.       
  40.       public static const MUTE_BUTTON:int = 15;
  41.       
  42.       public static const DOWN_STATE:uint = 2;
  43.       
  44.       public static const SEEK_BAR_SCRUB_TOLERANCE_DEFAULT:Number = 5;
  45.       
  46.       public static const FULL_SCREEN_OFF_BUTTON:int = 8;
  47.       
  48.       flvplayback_internal static const SKIN_AUTO_HIDE_MOTION_TIMEOUT_DEFAULT:Number = 3000;
  49.       
  50.       public static const SEEK_BAR:int = 17;
  51.       
  52.       public static const VOLUME_BAR_SCRUB_TOLERANCE_DEFAULT:Number = 0;
  53.       
  54.       public static const FULL_SCREEN_ON_BUTTON:int = 7;
  55.       
  56.       public static const FULL_SCREEN_BUTTON:int = 14;
  57.       
  58.       public static const BUFFERING_BAR:int = 16;
  59.       
  60.       public static const VERSION:String = "2.1.0.14";
  61.       
  62.       public static const VOLUME_BAR_HANDLE:int = 11;
  63.       
  64.       public static const PAUSE_BUTTON:int = 0;
  65.       
  66.       flvplayback_internal static const SKIN_AUTO_HIDE_INTERVAL:Number = 200;
  67.       
  68.       public static const OVER_STATE:uint = 1;
  69.       
  70.       flvplayback_internal static const SKIN_FADING_INTERVAL:Number = 100;
  71.       
  72.       public static const VOLUME_BAR:int = 18;
  73.       
  74.       public static const SHORT_VERSION:String = "2.1";
  75.       
  76.       public static const SEEK_BAR_INTERVAL_DEFAULT:Number = 250;
  77.       
  78.       flvplayback_internal static var skinClassPrefixes:Array = ["pauseButton","playButton","stopButton",null,null,"backButton","forwardButton","fullScreenButtonOn","fullScreenButtonOff","muteButtonOn","muteButtonOff",null,null,null,null,null,"bufferingBar","seekBar","volumeBar"];
  79.       
  80.       flvplayback_internal static const SKIN_FADING_MAX_TIME_DEFAULT:Number = 500;
  81.       
  82.       public static const SEEK_BAR_HIT:int = 4;
  83.       
  84.       public static const PLAY_PAUSE_BUTTON:int = 13;
  85.       
  86.       public static const BUFFERING_DELAY_INTERVAL_DEFAULT:Number = 1000;
  87.       
  88.       flvplayback_internal static var customComponentClassNames:Array = ["PauseButton","PlayButton","StopButton",null,null,"BackButton","ForwardButton",null,null,null,null,null,null,"PlayPauseButton","FullScreenButton","MuteButton","BufferingBar","SeekBar","VolumeBar"];
  89.       
  90.       public static const MUTE_ON_BUTTON:int = 9;
  91.       
  92.       public static const FULL_SCREEN_SOURCE_RECT_MIN_HEIGHT:uint = 240;
  93.       
  94.       public static const NUM_CONTROLS:int = 19;
  95.       
  96.       public static const VOLUME_BAR_INTERVAL_DEFAULT:Number = 250;
  97.       
  98.       public static const FULL_SCREEN_SOURCE_RECT_MIN_WIDTH:uint = 320;
  99.        
  100.       
  101.       flvplayback_internal var cacheStageBGColor:uint;
  102.       
  103.       flvplayback_internal var _bufferingDelayTimer:Timer;
  104.       
  105.       public var ctrlDataDict:Dictionary;
  106.       
  107.       flvplayback_internal var _skinAutoHide:Boolean;
  108.       
  109.       flvplayback_internal var placeholderLeft:Number;
  110.       
  111.       flvplayback_internal var _playAfterScrub:Boolean;
  112.       
  113.       public var customClips:Array;
  114.       
  115.       flvplayback_internal var _skinFadeStartTime:int;
  116.       
  117.       flvplayback_internal var delayedControls:Array;
  118.       
  119.       flvplayback_internal var _lastScrubPos:Number;
  120.       
  121.       flvplayback_internal var _skinAutoHideLastMotionTime:int;
  122.       
  123.       flvplayback_internal var _volumeBarTimer:Timer;
  124.       
  125.       flvplayback_internal var cacheFLVPlaybackScaleMode:Array;
  126.       
  127.       flvplayback_internal var borderScale9Rects:Array;
  128.       
  129.       flvplayback_internal var _volumeBarScrubTolerance:Number;
  130.       
  131.       flvplayback_internal var fullScreenSourceRectMinAspectRatio:Number;
  132.       
  133.       flvplayback_internal var _skin:String;
  134.       
  135.       flvplayback_internal var fullScreenSourceRectMinHeight:uint;
  136.       
  137.       flvplayback_internal var videoRight:Number;
  138.       
  139.       flvplayback_internal var _bufferingBarHides:Boolean;
  140.       
  141.       flvplayback_internal var placeholderRight:Number;
  142.       
  143.       flvplayback_internal var cachedSoundLevel:Number;
  144.       
  145.       flvplayback_internal var videoBottom:Number;
  146.       
  147.       flvplayback_internal var border_mc:DisplayObject;
  148.       
  149.       flvplayback_internal var borderAlpha:Number;
  150.       
  151.       flvplayback_internal var borderColorTransform:ColorTransform;
  152.       
  153.       flvplayback_internal var _skinFadingTimer:Timer;
  154.       
  155.       flvplayback_internal var __visible:Boolean;
  156.       
  157.       flvplayback_internal var borderColor:uint;
  158.       
  159.       flvplayback_internal var cacheFLVPlaybackIndex:int;
  160.       
  161.       flvplayback_internal var cacheFLVPlaybackLocation:Rectangle;
  162.       
  163.       flvplayback_internal var _skinReady:Boolean;
  164.       
  165.       flvplayback_internal var controls:Array;
  166.       
  167.       flvplayback_internal var cacheFLVPlaybackAlign:Array;
  168.       
  169.       flvplayback_internal var _skinAutoHideMouseX:Number;
  170.       
  171.       flvplayback_internal var _skinAutoHideMouseY:Number;
  172.       
  173.       flvplayback_internal var layout_mc:Sprite;
  174.       
  175.       flvplayback_internal var cacheSkinAutoHide:Boolean;
  176.       
  177.       flvplayback_internal var cacheStageScaleMode:String;
  178.       
  179.       flvplayback_internal var videoTop:Number;
  180.       
  181.       flvplayback_internal var _skinFadingMaxTime:int;
  182.       
  183.       flvplayback_internal var placeholderTop:Number;
  184.       
  185.       flvplayback_internal var _lastVolumePos:Number;
  186.       
  187.       flvplayback_internal var mouseCaptureCtrl:int;
  188.       
  189.       flvplayback_internal var _seekBarScrubTolerance:Number;
  190.       
  191.       flvplayback_internal var borderPrevRect:Rectangle;
  192.       
  193.       flvplayback_internal var skinTemplate:Sprite;
  194.       
  195.       flvplayback_internal var _progressPercent:Number;
  196.       
  197.       flvplayback_internal var videoLeft:Number;
  198.       
  199.       flvplayback_internal var _fullScreenVideoWidth:Number;
  200.       
  201.       flvplayback_internal var _isMuted:Boolean;
  202.       
  203.       flvplayback_internal var _skinAutoHideTimer:Timer;
  204.       
  205.       flvplayback_internal var _fullScreenBgColor:uint;
  206.       
  207.       flvplayback_internal var _vc:FLVPlayback;
  208.       
  209.       flvplayback_internal var _bufferingOn:Boolean;
  210.       
  211.       flvplayback_internal var _seekBarTimer:Timer;
  212.       
  213.       flvplayback_internal var _controlsEnabled:Boolean;
  214.       
  215.       flvplayback_internal var _fullScreen:Boolean;
  216.       
  217.       flvplayback_internal var placeholderBottom:Number;
  218.       
  219.       flvplayback_internal var fullScreenSourceRectMinWidth:uint;
  220.       
  221.       flvplayback_internal var _fullScreenTakeOver:Boolean;
  222.       
  223.       flvplayback_internal var skin_mc:Sprite;
  224.       
  225.       flvplayback_internal var _fullScreenAccel:Boolean;
  226.       
  227.       flvplayback_internal var _fullScreenVideoHeight:Number;
  228.       
  229.       flvplayback_internal var skinLoadDelayCount:uint;
  230.       
  231.       flvplayback_internal var _skinFadingIn:Boolean;
  232.       
  233.       flvplayback_internal var _skinAutoHideMotionTimeout:int;
  234.       
  235.       flvplayback_internal var borderCopy:Sprite;
  236.       
  237.       flvplayback_internal var cacheStageAlign:String;
  238.       
  239.       flvplayback_internal var cacheFLVPlaybackParent:DisplayObjectContainer;
  240.       
  241.       flvplayback_internal var skinLoader:Loader;
  242.       
  243.       flvplayback_internal var _skinScaleMaximum:Number;
  244.       
  245.       public function UIManager(param1:FLVPlayback)
  246.       {
  247.          var vc:FLVPlayback = param1;
  248.          super();
  249.          flvplayback_internal::_vc = vc;
  250.          flvplayback_internal::_skin = null;
  251.          flvplayback_internal::_skinAutoHide = false;
  252.          flvplayback_internal::cacheSkinAutoHide = flvplayback_internal::_skinAutoHide;
  253.          flvplayback_internal::_skinFadingMaxTime = flvplayback_internal::SKIN_FADING_MAX_TIME_DEFAULT;
  254.          flvplayback_internal::_skinAutoHideMotionTimeout = flvplayback_internal::SKIN_AUTO_HIDE_MOTION_TIMEOUT_DEFAULT;
  255.          flvplayback_internal::_skinReady = true;
  256.          flvplayback_internal::__visible = false;
  257.          flvplayback_internal::_bufferingBarHides = false;
  258.          flvplayback_internal::_controlsEnabled = true;
  259.          flvplayback_internal::_lastScrubPos = 0;
  260.          flvplayback_internal::_lastVolumePos = 0;
  261.          flvplayback_internal::cachedSoundLevel = flvplayback_internal::_vc.volume;
  262.          flvplayback_internal::_isMuted = false;
  263.          flvplayback_internal::controls = new Array();
  264.          customClips = null;
  265.          ctrlDataDict = new Dictionary(true);
  266.          flvplayback_internal::skin_mc = null;
  267.          flvplayback_internal::skinLoader = null;
  268.          flvplayback_internal::skinTemplate = null;
  269.          flvplayback_internal::layout_mc = null;
  270.          flvplayback_internal::border_mc = null;
  271.          flvplayback_internal::borderCopy = null;
  272.          flvplayback_internal::borderPrevRect = null;
  273.          flvplayback_internal::borderScale9Rects = null;
  274.          flvplayback_internal::borderAlpha = 0.85;
  275.          flvplayback_internal::borderColor = 4697035;
  276.          flvplayback_internal::borderColorTransform = new ColorTransform(0,0,0,0,71,171,203,255 * flvplayback_internal::borderAlpha);
  277.          flvplayback_internal::_seekBarScrubTolerance = SEEK_BAR_SCRUB_TOLERANCE_DEFAULT;
  278.          flvplayback_internal::_volumeBarScrubTolerance = VOLUME_BAR_SCRUB_TOLERANCE_DEFAULT;
  279.          flvplayback_internal::_bufferingOn = false;
  280.          flvplayback_internal::mouseCaptureCtrl = -1;
  281.          flvplayback_internal::_seekBarTimer = new Timer(SEEK_BAR_INTERVAL_DEFAULT);
  282.          flvplayback_internal::_seekBarTimer.addEventListener(TimerEvent.TIMER,flvplayback_internal::seekBarListener);
  283.          flvplayback_internal::_volumeBarTimer = new Timer(VOLUME_BAR_INTERVAL_DEFAULT);
  284.          flvplayback_internal::_volumeBarTimer.addEventListener(TimerEvent.TIMER,flvplayback_internal::volumeBarListener);
  285.          flvplayback_internal::_bufferingDelayTimer = new Timer(BUFFERING_DELAY_INTERVAL_DEFAULT,1);
  286.          flvplayback_internal::_bufferingDelayTimer.addEventListener(TimerEvent.TIMER,flvplayback_internal::doBufferingDelay);
  287.          flvplayback_internal::_skinAutoHideTimer = new Timer(flvplayback_internal::SKIN_AUTO_HIDE_INTERVAL);
  288.          flvplayback_internal::_skinAutoHideTimer.addEventListener(TimerEvent.TIMER,flvplayback_internal::skinAutoHideHitTest);
  289.          flvplayback_internal::_skinFadingTimer = new Timer(flvplayback_internal::SKIN_FADING_INTERVAL);
  290.          flvplayback_internal::_skinFadingTimer.addEventListener(TimerEvent.TIMER,flvplayback_internal::skinFadeMore);
  291.          flvplayback_internal::_vc.addEventListener(MetadataEvent.METADATA_RECEIVED,flvplayback_internal::handleIVPEvent);
  292.          flvplayback_internal::_vc.addEventListener(fl.video.VideoEvent.PLAYHEAD_UPDATE,flvplayback_internal::handleIVPEvent);
  293.          flvplayback_internal::_vc.addEventListener(VideoProgressEvent.PROGRESS,flvplayback_internal::handleIVPEvent);
  294.          flvplayback_internal::_vc.addEventListener(fl.video.VideoEvent.STATE_CHANGE,flvplayback_internal::handleIVPEvent);
  295.          flvplayback_internal::_vc.addEventListener(fl.video.VideoEvent.READY,flvplayback_internal::handleIVPEvent);
  296.          flvplayback_internal::_vc.addEventListener(LayoutEvent.LAYOUT,flvplayback_internal::handleLayoutEvent);
  297.          flvplayback_internal::_vc.addEventListener(AutoLayoutEvent.AUTO_LAYOUT,flvplayback_internal::handleLayoutEvent);
  298.          flvplayback_internal::_vc.addEventListener(SoundEvent.SOUND_UPDATE,flvplayback_internal::handleSoundEvent);
  299.          flvplayback_internal::_vc.addEventListener(Event.ADDED_TO_STAGE,flvplayback_internal::handleEvent);
  300.          flvplayback_internal::_vc.addEventListener(Event.REMOVED_FROM_STAGE,flvplayback_internal::handleEvent);
  301.          flvplayback_internal::fullScreenSourceRectMinWidth = FULL_SCREEN_SOURCE_RECT_MIN_WIDTH;
  302.          flvplayback_internal::fullScreenSourceRectMinHeight = FULL_SCREEN_SOURCE_RECT_MIN_HEIGHT;
  303.          flvplayback_internal::fullScreenSourceRectMinAspectRatio = FULL_SCREEN_SOURCE_RECT_MIN_WIDTH / FULL_SCREEN_SOURCE_RECT_MIN_HEIGHT;
  304.          flvplayback_internal::_fullScreen = false;
  305.          flvplayback_internal::_fullScreenTakeOver = true;
  306.          flvplayback_internal::_fullScreenBgColor = 0;
  307.          flvplayback_internal::_fullScreenAccel = false;
  308.          if(flvplayback_internal::_vc.stage != null)
  309.          {
  310.             try
  311.             {
  312.                flvplayback_internal::_fullScreen = flvplayback_internal::_vc.stage.displayState == StageDisplayState.FULL_SCREEN;
  313.                flvplayback_internal::_vc.stage.addEventListener(FullScreenEvent.FULL_SCREEN,flvplayback_internal::handleFullScreenEvent);
  314.             }
  315.             catch(se:SecurityError)
  316.             {
  317.             }
  318.          }
  319.          if(flvplayback_internal::layoutNameToIndexMappings == null)
  320.          {
  321.             flvplayback_internal::initLayoutNameToIndexMappings();
  322.          }
  323.       }
  324.       
  325.       flvplayback_internal static function getNumberPropSafe(param1:Object, param2:String) : Number
  326.       {
  327.          var numProp:* = undefined;
  328.          var obj:Object = param1;
  329.          var propName:String = param2;
  330.          try
  331.          {
  332.             numProp = obj[propName];
  333.             return Number(numProp);
  334.          }
  335.          catch(re:ReferenceError)
  336.          {
  337.          }
  338.          return NaN;
  339.       }
  340.       
  341.       flvplayback_internal static function getBooleanPropSafe(param1:Object, param2:String) : Boolean
  342.       {
  343.          var boolProp:* = undefined;
  344.          var obj:Object = param1;
  345.          var propName:String = param2;
  346.          try
  347.          {
  348.             boolProp = obj[propName];
  349.             return Boolean(boolProp);
  350.          }
  351.          catch(re:ReferenceError)
  352.          {
  353.          }
  354.          return false;
  355.       }
  356.       
  357.       flvplayback_internal static function initLayoutNameToIndexMappings() : void
  358.       {
  359.          var _loc1_:int = 0;
  360.          flvplayback_internal::layoutNameToIndexMappings = new Object();
  361.          _loc1_ = 0;
  362.          while(_loc1_ < flvplayback_internal::layoutNameArray.length)
  363.          {
  364.             if(flvplayback_internal::layoutNameArray[_loc1_] != null)
  365.             {
  366.                flvplayback_internal::layoutNameToIndexMappings[flvplayback_internal::layoutNameArray[_loc1_]] = _loc1_;
  367.             }
  368.             _loc1_++;
  369.          }
  370.       }
  371.       
  372.       public function get seekBarScrubTolerance() : Number
  373.       {
  374.          return flvplayback_internal::_seekBarScrubTolerance;
  375.       }
  376.       
  377.       flvplayback_internal function removeButtonListeners(param1:Sprite) : void
  378.       {
  379.          if(param1 == null)
  380.          {
  381.             return;
  382.          }
  383.          param1.removeEventListener(MouseEvent.ROLL_OVER,flvplayback_internal::handleButtonEvent);
  384.          param1.removeEventListener(MouseEvent.ROLL_OUT,flvplayback_internal::handleButtonEvent);
  385.          param1.removeEventListener(MouseEvent.MOUSE_DOWN,flvplayback_internal::handleButtonEvent);
  386.          param1.removeEventListener(MouseEvent.CLICK,flvplayback_internal::handleButtonEvent);
  387.          param1.removeEventListener(Event.ENTER_FRAME,flvplayback_internal::skinButtonControl);
  388.       }
  389.       
  390.       public function set skinFadeTime(param1:int) : void
  391.       {
  392.          flvplayback_internal::_skinFadingMaxTime = param1;
  393.       }
  394.       
  395.       public function get skinFadeTime() : int
  396.       {
  397.          return flvplayback_internal::_skinFadingMaxTime;
  398.       }
  399.       
  400.       flvplayback_internal function finishLoad(param1:Event) : void
  401.       {
  402.          var i:int = 0;
  403.          var cachedActivePlayerIndex:int = 0;
  404.          var state:String = null;
  405.          var j:int = 0;
  406.          var e:Event = param1;
  407.          try
  408.          {
  409.             ++flvplayback_internal::skinLoadDelayCount;
  410.             if(flvplayback_internal::skinLoadDelayCount < 2)
  411.             {
  412.                return;
  413.             }
  414.             flvplayback_internal::_vc.removeEventListener(Event.ENTER_FRAME,flvplayback_internal::finishLoad);
  415.             i = 0;
  416.             while(i < NUM_CONTROLS)
  417.             {
  418.                if(flvplayback_internal::delayedControls[i] != undefined)
  419.                {
  420.                   setControl(i,flvplayback_internal::delayedControls[i]);
  421.                }
  422.                i++;
  423.             }
  424.             if(flvplayback_internal::_fullScreenTakeOver)
  425.             {
  426.                flvplayback_internal::enterFullScreenTakeOver();
  427.             }
  428.             else
  429.             {
  430.                flvplayback_internal::exitFullScreenTakeOver();
  431.             }
  432.             flvplayback_internal::layoutSkin();
  433.             flvplayback_internal::setupSkinAutoHide(false);
  434.             flvplayback_internal::skin_mc.visible = flvplayback_internal::__visible;
  435.             flvplayback_internal::_vc.addChild(flvplayback_internal::skin_mc);
  436.             flvplayback_internal::_skinReady = true;
  437.             flvplayback_internal::_vc.flvplayback_internal::skinLoaded();
  438.             cachedActivePlayerIndex = int(flvplayback_internal::_vc.activeVideoPlayerIndex);
  439.             flvplayback_internal::_vc.activeVideoPlayerIndex = flvplayback_internal::_vc.visibleVideoPlayerIndex;
  440.             state = flvplayback_internal::_vc.state;
  441.             j = 0;
  442.             while(j < NUM_CONTROLS)
  443.             {
  444.                if(flvplayback_internal::controls[j] != undefined)
  445.                {
  446.                   flvplayback_internal::setEnabledAndVisibleForState(j,state);
  447.                   if(j < NUM_BUTTONS)
  448.                   {
  449.                      flvplayback_internal::skinButtonControl(flvplayback_internal::controls[j]);
  450.                   }
  451.                }
  452.                j++;
  453.             }
  454.             flvplayback_internal::_vc.activeVideoPlayerIndex = cachedActivePlayerIndex;
  455.          }
  456.          catch(err:Error)
  457.          {
  458.             flvplayback_internal::_vc.flvplayback_internal::skinError(err.message);
  459.             flvplayback_internal::removeSkin();
  460.          }
  461.       }
  462.       
  463.       flvplayback_internal function downloadSkin() : void
  464.       {
  465.          if(flvplayback_internal::skinLoader == null)
  466.          {
  467.             flvplayback_internal::skinLoader = new Loader();
  468.             flvplayback_internal::skinLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,flvplayback_internal::handleLoad);
  469.             flvplayback_internal::skinLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,flvplayback_internal::handleLoadErrorEvent);
  470.             flvplayback_internal::skinLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,flvplayback_internal::handleLoadErrorEvent);
  471.          }
  472.          flvplayback_internal::skinLoader.load(new URLRequest(flvplayback_internal::_skin));
  473.       }
  474.       
  475.       flvplayback_internal function removeSkin() : void
  476.       {
  477.          var i:int = 0;
  478.          if(flvplayback_internal::skinLoader != null)
  479.          {
  480.             try
  481.             {
  482.                flvplayback_internal::skinLoader.close();
  483.             }
  484.             catch(e1:Error)
  485.             {
  486.             }
  487.             flvplayback_internal::skinLoader = null;
  488.          }
  489.          if(flvplayback_internal::skin_mc != null)
  490.          {
  491.             i = 0;
  492.             while(i < NUM_CONTROLS)
  493.             {
  494.                if(flvplayback_internal::controls[i] != undefined)
  495.                {
  496.                   if(i < NUM_BUTTONS)
  497.                   {
  498.                      flvplayback_internal::removeButtonListeners(flvplayback_internal::controls[i]);
  499.                   }
  500.                   delete ctrlDataDict[flvplayback_internal::controls[i]];
  501.                   delete flvplayback_internal::controls[i];
  502.                }
  503.                i++;
  504.             }
  505.             try
  506.             {
  507.                flvplayback_internal::skin_mc.parent.removeChild(flvplayback_internal::skin_mc);
  508.             }
  509.             catch(e2:Error)
  510.             {
  511.             }
  512.             flvplayback_internal::skin_mc = null;
  513.          }
  514.          flvplayback_internal::skinTemplate = null;
  515.          flvplayback_internal::layout_mc = null;
  516.          flvplayback_internal::border_mc = null;
  517.          flvplayback_internal::borderCopy = null;
  518.          flvplayback_internal::borderPrevRect = null;
  519.          flvplayback_internal::borderScale9Rects = null;
  520.       }
  521.       
  522.       flvplayback_internal function positionBar(param1:Sprite, param2:String, param3:Number) : void
  523.       {
  524.          var ctrlData:ControlData = null;
  525.          var bar:DisplayObject = null;
  526.          var barData:ControlData = null;
  527.          var ctrl:Sprite = param1;
  528.          var type:String = param2;
  529.          var percent:Number = param3;
  530.          try
  531.          {
  532.             if(ctrl["positionBar"] is Function && Boolean(ctrl["positionBar"](type,percent)))
  533.             {
  534.                return;
  535.             }
  536.          }
  537.          catch(re2:ReferenceError)
  538.          {
  539.          }
  540.          ctrlData = ctrlDataDict[ctrl];
  541.          bar = ctrlData[type + "_mc"];
  542.          if(bar == null)
  543.          {
  544.             return;
  545.          }
  546.          barData = ctrlDataDict[bar];
  547.          if(bar.parent == ctrl)
  548.          {
  549.             if(barData.fill_mc == null)
  550.             {
  551.                bar.scaleX = barData.origScaleX * percent / 100;
  552.             }
  553.             else
  554.             {
  555.                flvplayback_internal::positionMaskedFill(bar,percent);
  556.             }
  557.          }
  558.          else
  559.          {
  560.             bar.x = ctrl.x + barData.leftMargin;
  561.             bar.y = ctrl.y + barData.origY;
  562.             if(barData.fill_mc == null)
  563.             {
  564.                bar.width = (ctrl.width - barData.leftMargin - barData.rightMargin) * percent / 100;
  565.             }
  566.             else
  567.             {
  568.                flvplayback_internal::positionMaskedFill(bar,percent);
  569.             }
  570.          }
  571.       }
  572.       
  573.       flvplayback_internal function setupButtonSkin(param1:int) : Sprite
  574.       {
  575.          var _loc2_:String = null;
  576.          var _loc3_:Sprite = null;
  577.          var _loc4_:ControlData = null;
  578.          _loc2_ = String(flvplayback_internal::skinClassPrefixes[param1]);
  579.          if(_loc2_ == null)
  580.          {
  581.             return null;
  582.          }
  583.          _loc3_ = new Sprite();
  584.          _loc4_ = new ControlData(this,_loc3_,null,param1);
  585.          ctrlDataDict[_loc3_] = _loc4_;
  586.          _loc4_.state_mc = new Array();
  587.          _loc4_.state_mc[NORMAL_STATE] = flvplayback_internal::setupButtonSkinState(_loc3_,flvplayback_internal::skinTemplate,_loc2_ + "NormalState");
  588.          _loc4_.state_mc[NORMAL_STATE].visible = true;
  589.          _loc4_.state_mc[OVER_STATE] = flvplayback_internal::setupButtonSkinState(_loc3_,flvplayback_internal::skinTemplate,_loc2_ + "OverState",_loc4_.state_mc[NORMAL_STATE]);
  590.          _loc4_.state_mc[DOWN_STATE] = flvplayback_internal::setupButtonSkinState(_loc3_,flvplayback_internal::skinTemplate,_loc2_ + "DownState",_loc4_.state_mc[NORMAL_STATE]);
  591.          _loc4_.disabled_mc = flvplayback_internal::setupButtonSkinState(_loc3_,flvplayback_internal::skinTemplate,_loc2_ + "DisabledState",_loc4_.state_mc[NORMAL_STATE]);
  592.          return _loc3_;
  593.       }
  594.       
  595.       public function get skinReady() : Boolean
  596.       {
  597.          return flvplayback_internal::_skinReady;
  598.       }
  599.       
  600.       public function get skinAutoHide() : Boolean
  601.       {
  602.          return flvplayback_internal::_skinAutoHide;
  603.       }
  604.       
  605.       flvplayback_internal function dispatchMessage(param1:int) : void
  606.       {
  607.          var cachedActivePlayerIndex:int = 0;
  608.          var ctrl:Sprite = null;
  609.          var ctrlData:ControlData = null;
  610.          var handle:Sprite = null;
  611.          var index:int = param1;
  612.          if(index == SEEK_BAR_HANDLE || index == SEEK_BAR_HIT)
  613.          {
  614.             flvplayback_internal::_vc.flvplayback_internal::_scrubStart();
  615.          }
  616.          cachedActivePlayerIndex = int(flvplayback_internal::_vc.activeVideoPlayerIndex);
  617.          flvplayback_internal::_vc.activeVideoPlayerIndex = flvplayback_internal::_vc.visibleVideoPlayerIndex;
  618.          switch(index)
  619.          {
  620.             case PAUSE_BUTTON:
  621.                flvplayback_internal::_vc.pause();
  622.                break;
  623.             case PLAY_BUTTON:
  624.                flvplayback_internal::_vc.play();
  625.                break;
  626.             case STOP_BUTTON:
  627.                flvplayback_internal::_vc.stop();
  628.                break;
  629.             case SEEK_BAR_HIT:
  630.             case SEEK_BAR_HANDLE:
  631.                ctrl = flvplayback_internal::controls[SEEK_BAR];
  632.                ctrlData = ctrlDataDict[ctrl];
  633.                flvplayback_internal::calcPercentageFromHandle(ctrl);
  634.                flvplayback_internal::_lastScrubPos = ctrlData.percentage;
  635.                if(index == SEEK_BAR_HIT)
  636.                {
  637.                   handle = flvplayback_internal::controls[SEEK_BAR_HANDLE];
  638.                   handle.x = handle.parent.mouseX;
  639.                   handle.y = handle.parent.mouseY;
  640.                }
  641.                flvplayback_internal::_vc.removeEventListener(fl.video.VideoEvent.PLAYHEAD_UPDATE,flvplayback_internal::handleIVPEvent);
  642.                if(flvplayback_internal::_vc.playing || flvplayback_internal::_vc.buffering)
  643.                {
  644.                   flvplayback_internal::_playAfterScrub = true;
  645.                }
  646.                else if(flvplayback_internal::_vc.state != VideoState.SEEKING)
  647.                {
  648.                   flvplayback_internal::_playAfterScrub = false;
  649.                }
  650.                flvplayback_internal::_seekBarTimer.start();
  651.                flvplayback_internal::startHandleDrag(ctrl);
  652.                flvplayback_internal::_vc.pause();
  653.                break;
  654.             case VOLUME_BAR_HIT:
  655.             case VOLUME_BAR_HANDLE:
  656.                ctrl = flvplayback_internal::controls[VOLUME_BAR];
  657.                ctrlData = ctrlDataDict[ctrl];
  658.                flvplayback_internal::calcPercentageFromHandle(ctrl);
  659.                flvplayback_internal::_lastVolumePos = ctrlData.percentage;
  660.                if(index == VOLUME_BAR_HIT)
  661.                {
  662.                   handle = flvplayback_internal::controls[VOLUME_BAR_HANDLE];
  663.                   handle.x = handle.parent.mouseX;
  664.                   handle.y = handle.parent.mouseY;
  665.                }
  666.                flvplayback_internal::_vc.removeEventListener(SoundEvent.SOUND_UPDATE,flvplayback_internal::handleSoundEvent);
  667.                flvplayback_internal::_volumeBarTimer.start();
  668.                flvplayback_internal::startHandleDrag(ctrl);
  669.                break;
  670.             case BACK_BUTTON:
  671.                flvplayback_internal::_vc.seekToPrevNavCuePoint();
  672.                break;
  673.             case FORWARD_BUTTON:
  674.                flvplayback_internal::_vc.seekToNextNavCuePoint();
  675.                break;
  676.             case MUTE_ON_BUTTON:
  677.                if(!flvplayback_internal::_isMuted)
  678.                {
  679.                   flvplayback_internal::_isMuted = true;
  680.                   flvplayback_internal::cachedSoundLevel = flvplayback_internal::_vc.volume;
  681.                   flvplayback_internal::_vc.volume = 0;
  682.                   flvplayback_internal::setEnabledAndVisibleForState(MUTE_OFF_BUTTON,VideoState.PLAYING);
  683.                   flvplayback_internal::skinButtonControl(flvplayback_internal::controls[MUTE_OFF_BUTTON]);
  684.                   flvplayback_internal::setEnabledAndVisibleForState(MUTE_ON_BUTTON,VideoState.PLAYING);
  685.                   flvplayback_internal::skinButtonControl(flvplayback_internal::controls[MUTE_ON_BUTTON]);
  686.                }
  687.                break;
  688.             case MUTE_OFF_BUTTON:
  689.                if(flvplayback_internal::_isMuted)
  690.                {
  691.                   flvplayback_internal::_isMuted = false;
  692.                   flvplayback_internal::_vc.volume = flvplayback_internal::cachedSoundLevel;
  693.                   flvplayback_internal::setEnabledAndVisibleForState(MUTE_OFF_BUTTON,VideoState.PLAYING);
  694.                   flvplayback_internal::skinButtonControl(flvplayback_internal::controls[MUTE_OFF_BUTTON]);
  695.                   flvplayback_internal::setEnabledAndVisibleForState(MUTE_ON_BUTTON,VideoState.PLAYING);
  696.                   flvplayback_internal::skinButtonControl(flvplayback_internal::controls[MUTE_ON_BUTTON]);
  697.                }
  698.                break;
  699.             case FULL_SCREEN_ON_BUTTON:
  700.                if(!flvplayback_internal::_fullScreen && flvplayback_internal::_vc.stage != null)
  701.                {
  702.                   enterFullScreenDisplayState();
  703.                   flvplayback_internal::setEnabledAndVisibleForState(FULL_SCREEN_OFF_BUTTON,VideoState.PLAYING);
  704.                   flvplayback_internal::skinButtonControl(flvplayback_internal::controls[FULL_SCREEN_OFF_BUTTON]);
  705.                   flvplayback_internal::setEnabledAndVisibleForState(FULL_SCREEN_ON_BUTTON,VideoState.PLAYING);
  706.                   flvplayback_internal::skinButtonControl(flvplayback_internal::controls[FULL_SCREEN_ON_BUTTON]);
  707.                }
  708.                break;
  709.             case FULL_SCREEN_OFF_BUTTON:
  710.                if(flvplayback_internal::_fullScreen && flvplayback_internal::_vc.stage != null)
  711.                {
  712.                   try
  713.                   {
  714.                      flvplayback_internal::_vc.stage.displayState = StageDisplayState.NORMAL;
  715.                   }
  716.                   catch(se:SecurityError)
  717.                   {
  718.                   }
  719.                   flvplayback_internal::setEnabledAndVisibleForState(FULL_SCREEN_OFF_BUTTON,VideoState.PLAYING);
  720.                   flvplayback_internal::skinButtonControl(flvplayback_internal::controls[FULL_SCREEN_OFF_BUTTON]);
  721.                   flvplayback_internal::setEnabledAndVisibleForState(FULL_SCREEN_ON_BUTTON,VideoState.PLAYING);
  722.                   flvplayback_internal::skinButtonControl(flvplayback_internal::controls[FULL_SCREEN_ON_BUTTON]);
  723.                }
  724.                break;
  725.             default:
  726.                throw new Error("Unknown ButtonControl");
  727.          }
  728.          flvplayback_internal::_vc.activeVideoPlayerIndex = cachedActivePlayerIndex;
  729.       }
  730.       
  731.       flvplayback_internal function handleFullScreenEvent(param1:FullScreenEvent) : void
  732.       {
  733.          flvplayback_internal::_fullScreen = param1.fullScreen;
  734.          flvplayback_internal::setEnabledAndVisibleForState(FULL_SCREEN_OFF_BUTTON,VideoState.PLAYING);
  735.          flvplayback_internal::skinButtonControl(flvplayback_internal::controls[FULL_SCREEN_OFF_BUTTON]);
  736.          flvplayback_internal::setEnabledAndVisibleForState(FULL_SCREEN_ON_BUTTON,VideoState.PLAYING);
  737.          flvplayback_internal::skinButtonControl(flvplayback_internal::controls[FULL_SCREEN_ON_BUTTON]);
  738.          if(flvplayback_internal::_fullScreen && flvplayback_internal::_fullScreenTakeOver)
  739.          {
  740.             flvplayback_internal::enterFullScreenTakeOver();
  741.          }
  742.          else if(!flvplayback_internal::_fullScreen)
  743.          {
  744.             flvplayback_internal::exitFullScreenTakeOver();
  745.          }
  746.       }
  747.       
  748.       flvplayback_internal function handleLayoutEvent(param1:LayoutEvent) : void
  749.       {
  750.          var _loc2_:int = 0;
  751.          if(flvplayback_internal::_fullScreen && flvplayback_internal::_fullScreenTakeOver && flvplayback_internal::_fullScreenAccel && flvplayback_internal::_vc.stage != null)
  752.          {
  753.             if(flvplayback_internal::_vc.registrationX != 0 || flvplayback_internal::_vc.registrationY != 0 || flvplayback_internal::_vc.parent != flvplayback_internal::_vc.stage || flvplayback_internal::_vc.registrationWidth != flvplayback_internal::_vc.stage.stageWidth || flvplayback_internal::_vc.registrationHeight != flvplayback_internal::_vc.stage.stageHeight)
  754.             {
  755.                flvplayback_internal::_vc.stage.displayState = StageDisplayState.NORMAL;
  756.                return;
  757.             }
  758.             _loc2_ = int(flvplayback_internal::_vc.activeVideoPlayerIndex);
  759.             flvplayback_internal::_vc.activeVideoPlayerIndex = flvplayback_internal::_vc.visibleVideoPlayerIndex;
  760.             if(flvplayback_internal::_vc.align != VideoAlign.CENTER)
  761.             {
  762.                flvplayback_internal::cacheFLVPlaybackAlign[flvplayback_internal::_vc.visibleVideoPlayerIndex] = flvplayback_internal::_vc.align;
  763.                flvplayback_internal::_vc.align = VideoAlign.CENTER;
  764.             }
  765.             if(flvplayback_internal::_vc.scaleMode != VideoScaleMode.MAINTAIN_ASPECT_RATIO)
  766.             {
  767.                flvplayback_internal::cacheFLVPlaybackScaleMode[flvplayback_internal::_vc.visibleVideoPlayerIndex] = flvplayback_internal::_vc.scaleMode;
  768.                flvplayback_internal::_vc.scaleMode = VideoScaleMode.MAINTAIN_ASPECT_RATIO;
  769.                flvplayback_internal::_vc.activeVideoPlayerIndex = _loc2_;
  770.                return;
  771.             }
  772.             flvplayback_internal::_vc.activeVideoPlayerIndex = _loc2_;
  773.          }
  774.          flvplayback_internal::layoutSkin();
  775.          flvplayback_internal::setupSkinAutoHide(false);
  776.       }
  777.       
  778.       flvplayback_internal function seekBarListener(param1:TimerEvent) : void
  779.       {
  780.          var _loc2_:int = 0;
  781.          var _loc3_:Sprite = null;
  782.          var _loc4_:ControlData = null;
  783.          var _loc5_:Number = NaN;
  784.          _loc2_ = int(flvplayback_internal::_vc.activeVideoPlayerIndex);
  785.          flvplayback_internal::_vc.activeVideoPlayerIndex = flvplayback_internal::_vc.visibleVideoPlayerIndex;
  786.          _loc3_ = flvplayback_internal::controls[SEEK_BAR];
  787.          if(_loc3_ == null)
  788.          {
  789.             return;
  790.          }
  791.          _loc4_ = ctrlDataDict[_loc3_];
  792.          flvplayback_internal::calcPercentageFromHandle(_loc3_);
  793.          _loc5_ = _loc4_.percentage;
  794.          if(param1 == null)
  795.          {
  796.             flvplayback_internal::_seekBarTimer.stop();
  797.             if(_loc5_ != flvplayback_internal::_lastScrubPos)
  798.             {
  799.                flvplayback_internal::_vc.seekPercent(_loc5_);
  800.             }
  801.             flvplayback_internal::_vc.addEventListener(fl.video.VideoEvent.PLAYHEAD_UPDATE,flvplayback_internal::handleIVPEvent);
  802.             if(flvplayback_internal::_playAfterScrub)
  803.             {
  804.                flvplayback_internal::_vc.play();
  805.             }
  806.          }
  807.          else if(flvplayback_internal::_vc.getVideoPlayer(flvplayback_internal::_vc.visibleVideoPlayerIndex).state != VideoState.SEEKING)
  808.          {
  809.             if(flvplayback_internal::_seekBarScrubTolerance <= 0 || Math.abs(_loc5_ - flvplayback_internal::_lastScrubPos) > flvplayback_internal::_seekBarScrubTolerance || _loc5_ < flvplayback_internal::_seekBarScrubTolerance || _loc5_ > 100 - flvplayback_internal::_seekBarScrubTolerance)
  810.             {
  811.                if(_loc5_ != flvplayback_internal::_lastScrubPos)
  812.                {
  813.                   flvplayback_internal::_lastScrubPos = _loc5_;
  814.                   flvplayback_internal::_vc.seekPercent(_loc5_);
  815.                }
  816.             }
  817.          }
  818.          flvplayback_internal::_vc.activeVideoPlayerIndex = _loc2_;
  819.       }
  820.       
  821.       public function get seekBarInterval() : Number
  822.       {
  823.          return flvplayback_internal::_seekBarTimer.delay;
  824.       }
  825.       
  826.       public function set skinAutoHide(param1:Boolean) : void
  827.       {
  828.          if(param1 == flvplayback_internal::_skinAutoHide)
  829.          {
  830.             return;
  831.          }
  832.          flvplayback_internal::_skinAutoHide = param1;
  833.          flvplayback_internal::cacheSkinAutoHide = param1;
  834.          flvplayback_internal::setupSkinAutoHide(true);
  835.       }
  836.       
  837.       flvplayback_internal function setCustomClip(param1:DisplayObject) : void
  838.       {
  839.          var dCopy:DisplayObject = null;
  840.          var ctrlData:ControlData = null;
  841.          var scale9Grid:Rectangle = null;
  842.          var diff:Number = NaN;
  843.          var numBorderBitmaps:int = 0;
  844.          var i:int = 0;
  845.          var lastXDim:Number = NaN;
  846.          var floorLastXDim:Number = NaN;
  847.          var lastYDim:Number = NaN;
  848.          var floorLastYDim:Number = NaN;
  849.          var newRect:Rectangle = null;
  850.          var dispObj:DisplayObject = param1;
  851.          dCopy = new dispObj["constructor"]();
  852.          flvplayback_internal::skin_mc.addChild(dCopy);
  853.          ctrlData = new ControlData(this,dCopy,null,-1);
  854.          ctrlDataDict[dCopy] = ctrlData;
  855.          ctrlData.avatar = dispObj;
  856.          customClips.push(dCopy);
  857.          if(dispObj.name == "border_mc")
  858.          {
  859.             flvplayback_internal::border_mc = dCopy;
  860.             try
  861.             {
  862.                flvplayback_internal::borderCopy = !!ctrlData.avatar["colorMe"] ? new Sprite() : null;
  863.             }
  864.             catch(re:ReferenceError)
  865.             {
  866.                flvplayback_internal::borderCopy = null;
  867.             }
  868.             if(flvplayback_internal::borderCopy != null)
  869.             {
  870.                flvplayback_internal::border_mc.visible = false;
  871.                scale9Grid = flvplayback_internal::border_mc.scale9Grid;
  872.                scale9Grid.x = Math.round(scale9Grid.x);
  873.                scale9Grid.y = Math.round(scale9Grid.y);
  874.                scale9Grid.width = Math.round(scale9Grid.width);
  875.                diff = scale9Grid.x + scale9Grid.width - flvplayback_internal::border_mc.scale9Grid.right;
  876.                if(diff > 0.5)
  877.                {
  878.                   --scale9Grid.width;
  879.                }
  880.                else if(diff < -0.5)
  881.                {
  882.                   ++scale9Grid.width;
  883.                }
  884.                scale9Grid.height = Math.round(scale9Grid.height);
  885.                diff = scale9Grid.y + scale9Grid.height - flvplayback_internal::border_mc.scale9Grid.bottom;
  886.                if(diff > 0.5)
  887.                {
  888.                   --scale9Grid.height;
  889.                }
  890.                else if(diff < -0.5)
  891.                {
  892.                   ++scale9Grid.height;
  893.                }
  894.                if(scale9Grid != null)
  895.                {
  896.                   flvplayback_internal::borderScale9Rects = new Array();
  897.                   lastXDim = flvplayback_internal::border_mc.width - (scale9Grid.x + scale9Grid.width);
  898.                   floorLastXDim = Math.floor(lastXDim);
  899.                   if(lastXDim - floorLastXDim < 0.05)
  900.                   {
  901.                      lastXDim = floorLastXDim;
  902.                   }
  903.                   else
  904.                   {
  905.                      lastXDim = floorLastXDim + 1;
  906.                   }
  907.                   lastYDim = flvplayback_internal::border_mc.height - (scale9Grid.y + scale9Grid.height);
  908.                   floorLastYDim = Math.floor(lastYDim);
  909.                   if(lastYDim - floorLastYDim < 0.05)
  910.                   {
  911.                      lastYDim = floorLastYDim;
  912.                   }
  913.                   else
  914.                   {
  915.                      lastYDim = floorLastYDim + 1;
  916.                   }
  917.                   newRect = new Rectangle(0,0,scale9Grid.x,scale9Grid.y);
  918.                   flvplayback_internal::borderScale9Rects.push(newRect.width < 1 || newRect.height < 1 ? null : newRect);
  919.                   newRect = new Rectangle(scale9Grid.x,0,scale9Grid.width,scale9Grid.y);
  920.                   flvplayback_internal::borderScale9Rects.push(newRect.width < 1 || newRect.height < 1 ? null : newRect);
  921.                   newRect = new Rectangle(scale9Grid.x + scale9Grid.width,0,lastXDim,scale9Grid.y);
  922.                   flvplayback_internal::borderScale9Rects.push(newRect.width < 1 || newRect.height < 1 ? null : newRect);
  923.                   newRect = new Rectangle(0,scale9Grid.y,scale9Grid.x,scale9Grid.height);
  924.                   flvplayback_internal::borderScale9Rects.push(newRect.width < 1 || newRect.height < 1 ? null : newRect);
  925.                   newRect = new Rectangle(scale9Grid.x,scale9Grid.y,scale9Grid.width,scale9Grid.height);
  926.                   flvplayback_internal::borderScale9Rects.push(newRect.width < 1 || newRect.height < 1 ? null : newRect);
  927.                   newRect = new Rectangle(scale9Grid.x + scale9Grid.width,scale9Grid.y,lastXDim,scale9Grid.height);
  928.                   flvplayback_internal::borderScale9Rects.push(newRect.width < 1 || newRect.height < 1 ? null : newRect);
  929.                   newRect = new Rectangle(0,scale9Grid.y + scale9Grid.height,scale9Grid.x,lastYDim);
  930.                   flvplayback_internal::borderScale9Rects.push(newRect.width < 1 || newRect.height < 1 ? null : newRect);
  931.                   newRect = new Rectangle(scale9Grid.x,scale9Grid.y + scale9Grid.height,scale9Grid.width,lastYDim);
  932.                   flvplayback_internal::borderScale9Rects.push(newRect.width < 1 || newRect.height < 1 ? null : newRect);
  933.                   newRect = new Rectangle(scale9Grid.x + scale9Grid.width,scale9Grid.y + scale9Grid.height,lastXDim,lastYDim);
  934.                   flvplayback_internal::borderScale9Rects.push(newRect.width < 1 || newRect.height < 1 ? null : newRect);
  935.                   i = 0;
  936.                   while(i < flvplayback_internal::borderScale9Rects.length)
  937.                   {
  938.                      if(flvplayback_internal::borderScale9Rects[i] != null)
  939.                      {
  940.                         break;
  941.                      }
  942.                      i++;
  943.                   }
  944.                   if(i >= flvplayback_internal::borderScale9Rects.length)
  945.                   {
  946.                      flvplayback_internal::borderScale9Rects = null;
  947.                   }
  948.                }
  949.                numBorderBitmaps = flvplayback_internal::borderScale9Rects == null ? 1 : 9;
  950.                i = 0;
  951.                while(i < numBorderBitmaps)
  952.                {
  953.                   if(flvplayback_internal::borderScale9Rects == null || flvplayback_internal::borderScale9Rects[i] != null)
  954.                   {
  955.                      flvplayback_internal::borderCopy.addChild(new Bitmap());
  956.                   }
  957.                   i++;
  958.                }
  959.                flvplayback_internal::skin_mc.addChild(flvplayback_internal::borderCopy);
  960.                flvplayback_internal::borderPrevRect = null;
  961.             }
  962.          }
  963.       }
  964.       
  965.       public function get fullScreenSkinDelay() : int
  966.       {
  967.          return flvplayback_internal::_skinAutoHideMotionTimeout;
  968.       }
  969.       
  970.       flvplayback_internal function doBufferingDelay(param1:TimerEvent) : void
  971.       {
  972.          var _loc2_:int = 0;
  973.          flvplayback_internal::_bufferingDelayTimer.reset();
  974.          _loc2_ = int(flvplayback_internal::_vc.activeVideoPlayerIndex);
  975.          flvplayback_internal::_vc.activeVideoPlayerIndex = flvplayback_internal::_vc.visibleVideoPlayerIndex;
  976.          if(flvplayback_internal::_vc.state == VideoState.BUFFERING)
  977.          {
  978.             flvplayback_internal::_bufferingOn = true;
  979.             flvplayback_internal::handleIVPEvent(new fl.video.VideoEvent(fl.video.VideoEvent.STATE_CHANGE,false,false,VideoState.BUFFERING,NaN,flvplayback_internal::_vc.visibleVideoPlayerIndex));
  980.          }
  981.          flvplayback_internal::_vc.activeVideoPlayerIndex = _loc2_;
  982.       }
  983.       
  984.       flvplayback_internal function volumeBarListener(param1:TimerEvent) : void
  985.       {
  986.          var _loc2_:Sprite = null;
  987.          var _loc3_:ControlData = null;
  988.          var _loc4_:Number = NaN;
  989.          var _loc5_:* = false;
  990.          _loc2_ = flvplayback_internal::controls[VOLUME_BAR];
  991.          if(_loc2_ == null)
  992.          {
  993.             return;
  994.          }
  995.          _loc3_ = ctrlDataDict[_loc2_];
  996.          flvplayback_internal::calcPercentageFromHandle(_loc2_);
  997.          _loc4_ = _loc3_.percentage;
  998.          if(_loc5_ = param1 == null)
  999.          {
  1000.             flvplayback_internal::_volumeBarTimer.stop();
  1001.             flvplayback_internal::_vc.addEventListener(SoundEvent.SOUND_UPDATE,flvplayback_internal::handleSoundEvent);
  1002.          }
  1003.          if(_loc5_ || flvplayback_internal::_volumeBarScrubTolerance <= 0 || Math.abs(_loc4_ - flvplayback_internal::_lastVolumePos) > flvplayback_internal::_volumeBarScrubTolerance || _loc4_ < flvplayback_internal::_volumeBarScrubTolerance || _loc4_ > 100 - flvplayback_internal::_volumeBarScrubTolerance)
  1004.          {
  1005.             if(_loc4_ != flvplayback_internal::_lastVolumePos)
  1006.             {
  1007.                if(flvplayback_internal::_isMuted)
  1008.                {
  1009.                   flvplayback_internal::cachedSoundLevel = _loc4_ / 100;
  1010.                }
  1011.                else
  1012.                {
  1013.                   flvplayback_internal::_vc.volume = _loc4_ / 100;
  1014.                }
  1015.                flvplayback_internal::_lastVolumePos = _loc4_;
  1016.             }
  1017.          }
  1018.       }
  1019.       
  1020.       public function get visible() : Boolean
  1021.       {
  1022.          return flvplayback_internal::__visible;
  1023.       }
  1024.       
  1025.       flvplayback_internal function fixUpBar(param1:DisplayObject, param2:String, param3:DisplayObject, param4:String) : void
  1026.       {
  1027.          var ctrlData:ControlData = null;
  1028.          var bar:DisplayObject = null;
  1029.          var barData:ControlData = null;
  1030.          var definitionHolder:DisplayObject = param1;
  1031.          var propPrefix:String = param2;
  1032.          var ctrl:DisplayObject = param3;
  1033.          var name:String = param4;
  1034.          ctrlData = ctrlDataDict[ctrl];
  1035.          if(ctrlData[name] != null)
  1036.          {
  1037.             return;
  1038.          }
  1039.          try
  1040.          {
  1041.             bar = ctrl[name];
  1042.          }
  1043.          catch(re:ReferenceError)
  1044.          {
  1045.             bar = null;
  1046.          }
  1047.          if(bar == null)
  1048.          {
  1049.             try
  1050.             {
  1051.                bar = flvplayback_internal::createSkin(definitionHolder,propPrefix + "LinkageID");
  1052.             }
  1053.             catch(ve:VideoError)
  1054.             {
  1055.                bar = null;
  1056.             }
  1057.             if(bar == null)
  1058.             {
  1059.                return;
  1060.             }
  1061.             if(ctrl.parent != null)
  1062.             {
  1063.                if(flvplayback_internal::getBooleanPropSafe(ctrl,propPrefix + "Below"))
  1064.                {
  1065.                   ctrl.parent.addChildAt(bar,ctrl.parent.getChildIndex(ctrl));
  1066.                }
  1067.                else
  1068.                {
  1069.                   ctrl.parent.addChild(bar);
  1070.                }
  1071.             }
  1072.          }
  1073.          ctrlData[name] = bar;
  1074.          barData = ctrlDataDict[bar];
  1075.          if(barData == null)
  1076.          {
  1077.             barData = new ControlData(this,bar,ctrl,-1);
  1078.             ctrlDataDict[bar] = barData;
  1079.          }
  1080.       }
  1081.       
  1082.       public function get volumeBarInterval() : Number
  1083.       {
  1084.          return flvplayback_internal::_volumeBarTimer.delay;
  1085.       }
  1086.       
  1087.       public function get bufferingBarHidesAndDisablesOthers() : Boolean
  1088.       {
  1089.          return flvplayback_internal::_bufferingBarHides;
  1090.       }
  1091.       
  1092.       flvplayback_internal function calcLayoutControl(param1:DisplayObject) : Rectangle
  1093.       {
  1094.          var rect:Rectangle = null;
  1095.          var ctrlData:ControlData = null;
  1096.          var anchorRight:Boolean = false;
  1097.          var anchorLeft:Boolean = false;
  1098.          var anchorTop:Boolean = false;
  1099.          var anchorBottom:Boolean = false;
  1100.          var ctrl:DisplayObject = param1;
  1101.          rect = new Rectangle();
  1102.          if(ctrl == null)
  1103.          {
  1104.             return rect;
  1105.          }
  1106.          ctrlData = ctrlDataDict[ctrl];
  1107.          if(ctrlData == null)
  1108.          {
  1109.             return rect;
  1110.          }
  1111.          if(ctrlData.avatar == null)
  1112.          {
  1113.             return rect;
  1114.          }
  1115.          anchorRight = false;
  1116.          anchorLeft = true;
  1117.          anchorTop = false;
  1118.          anchorBottom = true;
  1119.          try
  1120.          {
  1121.             anchorRight = Boolean(ctrlData.avatar["anchorRight"]);
  1122.          }
  1123.          catch(re1:ReferenceError)
  1124.          {
  1125.             anchorRight = false;
  1126.          }
  1127.          try
  1128.          {
  1129.             anchorLeft = Boolean(ctrlData.avatar["anchorLeft"]);
  1130.          }
  1131.          catch(re1:ReferenceError)
  1132.          {
  1133.             anchorLeft = true;
  1134.          }
  1135.          try
  1136.          {
  1137.             anchorTop = Boolean(ctrlData.avatar["anchorTop"]);
  1138.          }
  1139.          catch(re1:ReferenceError)
  1140.          {
  1141.             anchorTop = false;
  1142.          }
  1143.          try
  1144.          {
  1145.             anchorBottom = Boolean(ctrlData.avatar["anchorBottom"]);
  1146.          }
  1147.          catch(re1:ReferenceError)
  1148.          {
  1149.             anchorBottom = true;
  1150.          }
  1151.          if(anchorRight)
  1152.          {
  1153.             if(anchorLeft)
  1154.             {
  1155.                rect.x = ctrlData.avatar.x - flvplayback_internal::placeholderLeft + flvplayback_internal::videoLeft;
  1156.                rect.width = ctrlData.avatar.x + ctrlData.avatar.width - flvplayback_internal::placeholderRight + flvplayback_internal::videoRight - rect.x;
  1157.                ctrlData.origWidth = NaN;
  1158.             }
  1159.             else
  1160.             {
  1161.                rect.x = ctrlData.avatar.x - flvplayback_internal::placeholderRight + flvplayback_internal::videoRight;
  1162.                rect.width = ctrl.width;
  1163.             }
  1164.          }
  1165.          else
  1166.          {
  1167.             rect.x = ctrlData.avatar.x - flvplayback_internal::placeholderLeft + flvplayback_internal::videoLeft;
  1168.             rect.width = ctrl.width;
  1169.          }
  1170.          if(anchorTop)
  1171.          {
  1172.             if(anchorBottom)
  1173.             {
  1174.                rect.y = ctrlData.avatar.y - flvplayback_internal::placeholderTop + flvplayback_internal::videoTop;
  1175.                rect.height = ctrlData.avatar.y + ctrlData.avatar.height - flvplayback_internal::placeholderBottom + flvplayback_internal::videoBottom - rect.y;
  1176.                ctrlData.origHeight = NaN;
  1177.             }
  1178.             else
  1179.             {
  1180.                rect.y = ctrlData.avatar.y - flvplayback_internal::placeholderTop + flvplayback_internal::videoTop;
  1181.                rect.height = ctrl.height;
  1182.             }
  1183.          }
  1184.          else
  1185.          {
  1186.             rect.y = ctrlData.avatar.y - flvplayback_internal::placeholderBottom + flvplayback_internal::videoBottom;
  1187.             rect.height = ctrl.height;
  1188.          }
  1189.          try
  1190.          {
  1191.             if(ctrl["layoutSelf"] is Function)
  1192.             {
  1193.                rect = ctrl["layoutSelf"](rect);
  1194.             }
  1195.          }
  1196.          catch(re3:ReferenceError)
  1197.          {
  1198.          }
  1199.          return rect;
  1200.       }
  1201.       
  1202.       flvplayback_internal function skinFadeMore(param1:TimerEvent) : void
  1203.       {
  1204.          var _loc2_:Number = NaN;
  1205.          if(!flvplayback_internal::_skinFadingIn && flvplayback_internal::skin_mc.alpha <= 0.5 || flvplayback_internal::_skinFadingIn && flvplayback_internal::skin_mc.alpha >= 0.95)
  1206.          {
  1207.             flvplayback_internal::skin_mc.visible = flvplayback_internal::_skinFadingIn;
  1208.             flvplayback_internal::skin_mc.alpha = 1;
  1209.             flvplayback_internal::_skinFadingTimer.stop();
  1210.          }
  1211.          else
  1212.          {
  1213.             _loc2_ = (getTimer() - flvplayback_internal::_skinFadeStartTime) / flvplayback_internal::_skinFadingMaxTime;
  1214.             if(!flvplayback_internal::_skinFadingIn)
  1215.             {
  1216.                _loc2_ = 1 - _loc2_;
  1217.             }
  1218.             if(_loc2_ < 0)
  1219.             {
  1220.                _loc2_ = 0;
  1221.             }
  1222.             else if(_loc2_ > 1)
  1223.             {
  1224.                _loc2_ = 1;
  1225.             }
  1226.             flvplayback_internal::skin_mc.alpha = _loc2_;
  1227.          }
  1228.       }
  1229.       
  1230.       flvplayback_internal function bitmapCopyBorder() : void
  1231.       {
  1232.          var _loc1_:Rectangle = null;
  1233.          var _loc2_:BitmapData = null;
  1234.          var _loc3_:Matrix = null;
  1235.          var _loc4_:Number = NaN;
  1236.          var _loc5_:Number = NaN;
  1237.          var _loc6_:Rectangle = null;
  1238.          var _loc7_:int = 0;
  1239.          var _loc8_:Number = NaN;
  1240.          var _loc9_:Number = NaN;
  1241.          var _loc10_:int = 0;
  1242.          var _loc11_:Bitmap = null;
  1243.          var _loc12_:Number = NaN;
  1244.          var _loc13_:Number = NaN;
  1245.          if(flvplayback_internal::border_mc == null || flvplayback_internal::borderCopy == null)
  1246.          {
  1247.             return;
  1248.          }
  1249.          _loc1_ = flvplayback_internal::border_mc.getBounds(flvplayback_internal::skin_mc);
  1250.          if(flvplayback_internal::borderPrevRect == null || !flvplayback_internal::borderPrevRect.equals(_loc1_))
  1251.          {
  1252.             flvplayback_internal::borderCopy.x = _loc1_.x;
  1253.             flvplayback_internal::borderCopy.y = _loc1_.y;
  1254.             _loc3_ = new Matrix(flvplayback_internal::border_mc.scaleX,0,0,flvplayback_internal::border_mc.scaleY,0,0);
  1255.             if(flvplayback_internal::borderScale9Rects == null)
  1256.             {
  1257.                _loc2_ = new BitmapData(_loc1_.width,_loc1_.height,true,0);
  1258.                _loc2_.draw(flvplayback_internal::border_mc,_loc3_,flvplayback_internal::borderColorTransform);
  1259.                Bitmap(flvplayback_internal::borderCopy.getChildAt(0)).bitmapData = _loc2_;
  1260.             }
  1261.             else
  1262.             {
  1263.                _loc4_ = 0;
  1264.                _loc5_ = 0;
  1265.                _loc6_ = new Rectangle(0,0,0,0);
  1266.                _loc7_ = 0;
  1267.                _loc8_ = 0;
  1268.                if(flvplayback_internal::borderScale9Rects[3] != null)
  1269.                {
  1270.                   _loc8_ += flvplayback_internal::borderScale9Rects[3].width;
  1271.                }
  1272.                if(flvplayback_internal::borderScale9Rects[5] != null)
  1273.                {
  1274.                   _loc8_ += flvplayback_internal::borderScale9Rects[5].width;
  1275.                }
  1276.                _loc9_ = 0;
  1277.                if(flvplayback_internal::borderScale9Rects[1] != null)
  1278.                {
  1279.                   _loc9_ += flvplayback_internal::borderScale9Rects[1].height;
  1280.                }
  1281.                if(flvplayback_internal::borderScale9Rects[7] != null)
  1282.                {
  1283.                   _loc9_ += flvplayback_internal::borderScale9Rects[7].height;
  1284.                }
  1285.                _loc10_ = 0;
  1286.                while(_loc10_ < flvplayback_internal::borderScale9Rects.length)
  1287.                {
  1288.                   if(_loc10_ % 3 == 0)
  1289.                   {
  1290.                      _loc4_ = 0;
  1291.                      _loc5_ += _loc6_.height;
  1292.                   }
  1293.                   if(flvplayback_internal::borderScale9Rects[_loc10_] != null)
  1294.                   {
  1295.                      _loc6_ = Rectangle(flvplayback_internal::borderScale9Rects[_loc10_]).clone();
  1296.                      _loc3_.a = 1;
  1297.                      if(_loc10_ == 1 || _loc10_ == 4 || _loc10_ == 7)
  1298.                      {
  1299.                         _loc12_ = (_loc1_.width - _loc8_) / _loc6_.width;
  1300.                         _loc6_.x *= _loc12_;
  1301.                         _loc6_.width *= _loc12_;
  1302.                         _loc6_.width = Math.round(_loc6_.width);
  1303.                         _loc3_.a *= _loc12_;
  1304.                      }
  1305.                      _loc3_.tx = -_loc6_.x;
  1306.                      _loc6_.x = 0;
  1307.                      _loc3_.d = 1;
  1308.                      if(_loc10_ >= 3 && _loc10_ <= 5)
  1309.                      {
  1310.                         _loc13_ = (_loc1_.height - _loc9_) / _loc6_.height;
  1311.                         _loc6_.y *= _loc13_;
  1312.                         _loc6_.height *= _loc13_;
  1313.                         _loc6_.height = Math.round(_loc6_.height);
  1314.                         _loc3_.d *= _loc13_;
  1315.                      }
  1316.                      _loc3_.ty = -_loc6_.y;
  1317.                      _loc6_.y = 0;
  1318.                      _loc2_ = new BitmapData(_loc6_.width,_loc6_.height,true,0);
  1319.                      _loc2_.draw(flvplayback_internal::border_mc,_loc3_,flvplayback_internal::borderColorTransform,null,_loc6_,false);
  1320.                      _loc11_ = Bitmap(flvplayback_internal::borderCopy.getChildAt(_loc7_));
  1321.                      _loc7_++;
  1322.                      _loc11_.bitmapData = _loc2_;
  1323.                      _loc11_.x = _loc4_;
  1324.                      _loc11_.y = _loc5_;
  1325.                      _loc4_ += _loc6_.width;
  1326.                   }
  1327.                   _loc10_++;
  1328.                }
  1329.             }
  1330.             flvplayback_internal::borderPrevRect = _loc1_;
  1331.          }
  1332.       }
  1333.       
  1334.       flvplayback_internal function resetPlayPause() : void
  1335.       {
  1336.          var _loc1_:int = 0;
  1337.          if(flvplayback_internal::controls[PLAY_PAUSE_BUTTON] == undefined)
  1338.          {
  1339.             return;
  1340.          }
  1341.          _loc1_ = PAUSE_BUTTON;
  1342.          while(_loc1_ <= PLAY_BUTTON)
  1343.          {
  1344.             flvplayback_internal::removeButtonListeners(flvplayback_internal::controls[_loc1_]);
  1345.             delete ctrlDataDict[flvplayback_internal::controls[_loc1_]];
  1346.             delete flvplayback_internal::controls[_loc1_];
  1347.             _loc1_++;
  1348.          }
  1349.          delete ctrlDataDict[flvplayback_internal::controls[PLAY_PAUSE_BUTTON]];
  1350.          delete flvplayback_internal::controls[PLAY_PAUSE_BUTTON];
  1351.       }
  1352.       
  1353.       public function setControl(param1:int, param2:Sprite) : void
  1354.       {
  1355.          var ctrlData:ControlData = null;
  1356.          var index:int = param1;
  1357.          var ctrl:Sprite = param2;
  1358.          if(ctrl == flvplayback_internal::controls[index])
  1359.          {
  1360.             return;
  1361.          }
  1362.          switch(index)
  1363.          {
  1364.             case PAUSE_BUTTON:
  1365.             case PLAY_BUTTON:
  1366.                flvplayback_internal::resetPlayPause();
  1367.                break;
  1368.             case PLAY_PAUSE_BUTTON:
  1369.                if(ctrl == null || ctrl.parent != flvplayback_internal::skin_mc)
  1370.                {
  1371.                   flvplayback_internal::resetPlayPause();
  1372.                }
  1373.                if(ctrl != null)
  1374.                {
  1375.                   setControl(PAUSE_BUTTON,Sprite(ctrl.getChildByName("pause_mc")));
  1376.                   setControl(PLAY_BUTTON,Sprite(ctrl.getChildByName("play_mc")));
  1377.                }
  1378.                break;
  1379.             case FULL_SCREEN_BUTTON:
  1380.                if(ctrl != null)
  1381.                {
  1382.                   setControl(FULL_SCREEN_ON_BUTTON,Sprite(ctrl.getChildByName("on_mc")));
  1383.                   setControl(FULL_SCREEN_OFF_BUTTON,Sprite(ctrl.getChildByName("off_mc")));
  1384.                }
  1385.                break;
  1386.             case MUTE_BUTTON:
  1387.                if(ctrl != null)
  1388.                {
  1389.                   setControl(MUTE_ON_BUTTON,Sprite(ctrl.getChildByName("on_mc")));
  1390.                   setControl(MUTE_OFF_BUTTON,Sprite(ctrl.getChildByName("off_mc")));
  1391.                }
  1392.          }
  1393.          if(flvplayback_internal::controls[index] != null)
  1394.          {
  1395.             try
  1396.             {
  1397.                delete flvplayback_internal::controls[index]["uiMgr"];
  1398.             }
  1399.             catch(re:ReferenceError)
  1400.             {
  1401.             }
  1402.             if(index < NUM_BUTTONS)
  1403.             {
  1404.                flvplayback_internal::removeButtonListeners(flvplayback_internal::controls[index]);
  1405.             }
  1406.             delete ctrlDataDict[flvplayback_internal::controls[index]];
  1407.             delete flvplayback_internal::controls[index];
  1408.          }
  1409.          if(ctrl == null)
  1410.          {
  1411.             return;
  1412.          }
  1413.          ctrlData = ctrlDataDict[ctrl];
  1414.          if(ctrlData == null)
  1415.          {
  1416.             ctrlData = new ControlData(this,ctrl,null,index);
  1417.             ctrlDataDict[ctrl] = ctrlData;
  1418.          }
  1419.          else
  1420.          {
  1421.             ctrlData.index = index;
  1422.          }
  1423.          if(index >= NUM_BUTTONS)
  1424.          {
  1425.             flvplayback_internal::controls[index] = ctrl;
  1426.             switch(index)
  1427.             {
  1428.                case SEEK_BAR:
  1429.                   flvplayback_internal::addBarControl(ctrl);
  1430.                   break;
  1431.                case VOLUME_BAR:
  1432.                   flvplayback_internal::addBarControl(ctrl);
  1433.                   ctrlData.percentage = flvplayback_internal::_vc.volume * 100;
  1434.                   break;
  1435.                case BUFFERING_BAR:
  1436.                   if(ctrl.parent == flvplayback_internal::skin_mc)
  1437.                   {
  1438.                      flvplayback_internal::finishAddBufferingBar();
  1439.                   }
  1440.                   else
  1441.                   {
  1442.                      ctrl.addEventListener(Event.ENTER_FRAME,flvplayback_internal::finishAddBufferingBar);
  1443.                   }
  1444.             }
  1445.             flvplayback_internal::setEnabledAndVisibleForState(index,flvplayback_internal::_vc.state);
  1446.          }
  1447.          else
  1448.          {
  1449.             flvplayback_internal::controls[index] = ctrl;
  1450.             flvplayback_internal::addButtonControl(ctrl);
  1451.          }
  1452.       }
  1453.       
  1454.       flvplayback_internal function createSkin(param1:DisplayObject, param2:String) : DisplayObject
  1455.       {
  1456.          var stateSkinDesc:* = undefined;
  1457.          var theClass:Class = null;
  1458.          var definitionHolder:DisplayObject = param1;
  1459.          var skinName:String = param2;
  1460.          try
  1461.          {
  1462.             stateSkinDesc = definitionHolder[skinName];
  1463.             if(stateSkinDesc is String)
  1464.             {
  1465.                try
  1466.                {
  1467.                   theClass = Class(definitionHolder.loaderInfo.applicationDomain.getDefinition(stateSkinDesc));
  1468.                }
  1469.                catch(err1:Error)
  1470.                {
  1471.                   theClass = Class(getDefinitionByName(stateSkinDesc));
  1472.                }
  1473.                return DisplayObject(new theClass());
  1474.             }
  1475.             if(stateSkinDesc is Class)
  1476.             {
  1477.                return new stateSkinDesc();
  1478.             }
  1479.             if(stateSkinDesc is DisplayObject)
  1480.             {
  1481.                return stateSkinDesc;
  1482.             }
  1483.          }
  1484.          catch(err2:Error)
  1485.          {
  1486.             throw new VideoError(VideoError.MISSING_SKIN_STYLE,skinName);
  1487.          }
  1488.          return null;
  1489.       }
  1490.       
  1491.       flvplayback_internal function addButtonControl(param1:Sprite) : void
  1492.       {
  1493.          var _loc2_:ControlData = null;
  1494.          var _loc3_:int = 0;
  1495.          if(param1 == null)
  1496.          {
  1497.             return;
  1498.          }
  1499.          _loc2_ = ctrlDataDict[param1];
  1500.          param1.mouseChildren = false;
  1501.          _loc3_ = int(flvplayback_internal::_vc.activeVideoPlayerIndex);
  1502.          flvplayback_internal::_vc.activeVideoPlayerIndex = flvplayback_internal::_vc.visibleVideoPlayerIndex;
  1503.          _loc2_.state = NORMAL_STATE;
  1504.          flvplayback_internal::setEnabledAndVisibleForState(_loc2_.index,flvplayback_internal::_vc.state);
  1505.          param1.addEventListener(MouseEvent.ROLL_OVER,flvplayback_internal::handleButtonEvent);
  1506.          param1.addEventListener(MouseEvent.ROLL_OUT,flvplayback_internal::handleButtonEvent);
  1507.          param1.addEventListener(MouseEvent.MOUSE_DOWN,flvplayback_internal::handleButtonEvent);
  1508.          param1.addEventListener(MouseEvent.CLICK,flvplayback_internal::handleButtonEvent);
  1509.          if(param1.parent == flvplayback_internal::skin_mc)
  1510.          {
  1511.             flvplayback_internal::skinButtonControl(param1);
  1512.          }
  1513.          else
  1514.          {
  1515.             param1.addEventListener(Event.ENTER_FRAME,flvplayback_internal::skinButtonControl);
  1516.          }
  1517.          flvplayback_internal::_vc.activeVideoPlayerIndex = _loc3_;
  1518.       }
  1519.       
  1520.       flvplayback_internal function hookUpCustomComponents() : void
  1521.       {
  1522.          var searchHash:Object = null;
  1523.          var doTheSearch:Boolean = false;
  1524.          var i:int = 0;
  1525.          var dispObj:DisplayObject = null;
  1526.          var name:String = null;
  1527.          var index:int = 0;
  1528.          var ctrl:Sprite = null;
  1529.          searchHash = new Object();
  1530.          doTheSearch = false;
  1531.          i = 0;
  1532.          while(i < NUM_CONTROLS)
  1533.          {
  1534.             if(flvplayback_internal::controls[i] == null)
  1535.             {
  1536.                searchHash[flvplayback_internal::customComponentClassNames[i]] = i;
  1537.                doTheSearch = true;
  1538.             }
  1539.             i++;
  1540.          }
  1541.          if(!doTheSearch)
  1542.          {
  1543.             return;
  1544.          }
  1545.          i = 0;
  1546.          for(; i < flvplayback_internal::_vc.parent.numChildren; i++)
  1547.          {
  1548.             dispObj = flvplayback_internal::_vc.parent.getChildAt(i);
  1549.             name = getQualifiedClassName(dispObj);
  1550.             if(searchHash[name] != undefined)
  1551.             {
  1552.                if(typeof searchHash[name] == "number")
  1553.                {
  1554.                   index = int(searchHash[name]);
  1555.                   try
  1556.                   {
  1557.                      ctrl = Sprite(dispObj);
  1558.                      if((index >= NUM_BUTTONS || ctrl["placeholder_mc"] is DisplayObject) && ctrl["uiMgr"] == null)
  1559.                      {
  1560.                         setControl(index,ctrl);
  1561.                         searchHash[name] = ctrl;
  1562.                      }
  1563.                   }
  1564.                   catch(err:Error)
  1565.                   {
  1566.                      continue;
  1567.                   }
  1568.                }
  1569.             }
  1570.          }
  1571.       }
  1572.       
  1573.       flvplayback_internal function positionHandle(param1:Sprite) : void
  1574.       {
  1575.          var _loc2_:ControlData = null;
  1576.          var _loc3_:Sprite = null;
  1577.          var _loc4_:ControlData = null;
  1578.          var _loc5_:Number = NaN;
  1579.          var _loc6_:Number = NaN;
  1580.          if(param1 == null)
  1581.          {
  1582.             return;
  1583.          }
  1584.          if(param1["positionHandle"] is Function && Boolean(param1["positionHandle"]()))
  1585.          {
  1586.             return;
  1587.          }
  1588.          _loc2_ = ctrlDataDict[param1];
  1589.          _loc3_ = _loc2_.handle_mc;
  1590.          if(_loc3_ == null)
  1591.          {
  1592.             return;
  1593.          }
  1594.          _loc4_ = ctrlDataDict[_loc3_];
  1595.          _loc6_ = (_loc5_ = isNaN(_loc2_.origWidth) ? param1.width : _loc2_.origWidth) - _loc4_.rightMargin - _loc4_.leftMargin;
  1596.          _loc3_.x = param1.x + _loc4_.leftMargin + _loc6_ * _loc2_.percentage / 100;
  1597.          _loc3_.y = param1.y + _loc4_.origY;
  1598.          if(_loc2_.fullness_mc != null)
  1599.          {
  1600.             flvplayback_internal::positionBar(param1,"fullness",_loc2_.percentage);
  1601.          }
  1602.       }
  1603.       
  1604.       flvplayback_internal function exitFullScreenTakeOver() : void
  1605.       {
  1606.          var fullScreenBG:Sprite = null;
  1607.          var cacheActiveIndex:int = 0;
  1608.          var i:int = 0;
  1609.          var vp:VideoPlayer = null;
  1610.          if(flvplayback_internal::cacheFLVPlaybackParent == null)
  1611.          {
  1612.             return;
  1613.          }
  1614.          flvplayback_internal::_vc.removeEventListener(Event.ADDED_TO_STAGE,flvplayback_internal::handleEvent);
  1615.          flvplayback_internal::_vc.stage.removeEventListener(FullScreenEvent.FULL_SCREEN,flvplayback_internal::handleFullScreenEvent);
  1616.          try
  1617.          {
  1618.             if(flvplayback_internal::_fullScreenAccel)
  1619.             {
  1620.                flvplayback_internal::_vc.stage.fullScreenSourceRect = new Rectangle(0,0,-1,-1);
  1621.             }
  1622.             else
  1623.             {
  1624.                flvplayback_internal::_vc.stage.align = flvplayback_internal::cacheStageAlign;
  1625.                flvplayback_internal::_vc.stage.scaleMode = flvplayback_internal::cacheStageScaleMode;
  1626.             }
  1627.             fullScreenBG = Sprite(flvplayback_internal::_vc.getChildByName("fullScreenBG"));
  1628.             if(fullScreenBG != null)
  1629.             {
  1630.                flvplayback_internal::_vc.removeChild(fullScreenBG);
  1631.             }
  1632.             if(flvplayback_internal::_vc.parent != flvplayback_internal::cacheFLVPlaybackParent)
  1633.             {
  1634.                flvplayback_internal::cacheFLVPlaybackParent.addChildAt(flvplayback_internal::_vc,flvplayback_internal::cacheFLVPlaybackIndex);
  1635.             }
  1636.             else
  1637.             {
  1638.                flvplayback_internal::cacheFLVPlaybackParent.setChildIndex(flvplayback_internal::_vc,flvplayback_internal::cacheFLVPlaybackIndex);
  1639.             }
  1640.             cacheActiveIndex = int(flvplayback_internal::_vc.activeVideoPlayerIndex);
  1641.             i = 0;
  1642.             while(i < flvplayback_internal::_vc.flvplayback_internal::videoPlayers.length)
  1643.             {
  1644.                vp = flvplayback_internal::_vc.flvplayback_internal::videoPlayers[i] as VideoPlayer;
  1645.                if(vp != null)
  1646.                {
  1647.                   flvplayback_internal::_vc.activeVideoPlayerIndex = i;
  1648.                   if(flvplayback_internal::cacheFLVPlaybackScaleMode[i] != undefined)
  1649.                   {
  1650.                      flvplayback_internal::_vc.scaleMode = flvplayback_internal::cacheFLVPlaybackScaleMode[i];
  1651.                   }
  1652.                   if(flvplayback_internal::cacheFLVPlaybackAlign[i])
  1653.                   {
  1654.                      flvplayback_internal::_vc.align = flvplayback_internal::cacheFLVPlaybackAlign[i];
  1655.                   }
  1656.                }
  1657.                i++;
  1658.             }
  1659.             flvplayback_internal::_vc.activeVideoPlayerIndex = cacheActiveIndex;
  1660.             flvplayback_internal::_vc.registrationX = flvplayback_internal::cacheFLVPlaybackLocation.x;
  1661.             flvplayback_internal::_vc.registrationY = flvplayback_internal::cacheFLVPlaybackLocation.y;
  1662.             flvplayback_internal::_vc.setSize(flvplayback_internal::cacheFLVPlaybackLocation.width,flvplayback_internal::cacheFLVPlaybackLocation.height);
  1663.          }
  1664.          catch(err:Error)
  1665.          {
  1666.          }
  1667.          flvplayback_internal::_vc.addEventListener(Event.ADDED_TO_STAGE,flvplayback_internal::handleEvent);
  1668.          flvplayback_internal::_vc.stage.addEventListener(FullScreenEvent.FULL_SCREEN,flvplayback_internal::handleFullScreenEvent);
  1669.          flvplayback_internal::_fullScreen = false;
  1670.          flvplayback_internal::_fullScreenAccel = false;
  1671.          flvplayback_internal::cacheStageAlign = null;
  1672.          flvplayback_internal::cacheStageScaleMode = null;
  1673.          flvplayback_internal::cacheFLVPlaybackParent = null;
  1674.          flvplayback_internal::cacheFLVPlaybackIndex = 0;
  1675.          flvplayback_internal::cacheFLVPlaybackLocation = null;
  1676.          flvplayback_internal::cacheFLVPlaybackScaleMode = null;
  1677.          flvplayback_internal::cacheFLVPlaybackAlign = null;
  1678.          if(flvplayback_internal::_skinAutoHide != flvplayback_internal::cacheSkinAutoHide)
  1679.          {
  1680.             flvplayback_internal::_skinAutoHide = flvplayback_internal::cacheSkinAutoHide;
  1681.             flvplayback_internal::setupSkinAutoHide(false);
  1682.          }
  1683.       }
  1684.       
  1685.       flvplayback_internal function positionMaskedFill(param1:DisplayObject, param2:Number) : void
  1686.       {
  1687.          var ctrlData:ControlData = null;
  1688.          var fill:DisplayObject = null;
  1689.          var mask:DisplayObject = null;
  1690.          var fillData:ControlData = null;
  1691.          var maskData:ControlData = null;
  1692.          var slideReveal:Boolean = false;
  1693.          var maskSprite:Sprite = null;
  1694.          var barData:ControlData = null;
  1695.          var ctrl:DisplayObject = param1;
  1696.          var percent:Number = param2;
  1697.          if(ctrl == null)
  1698.          {
  1699.             return;
  1700.          }
  1701.          ctrlData = ctrlDataDict[ctrl];
  1702.          fill = ctrlData.fill_mc;
  1703.          if(fill == null)
  1704.          {
  1705.             return;
  1706.          }
  1707.          mask = ctrlData.mask_mc;
  1708.          if(ctrlData.mask_mc == null)
  1709.          {
  1710.             try
  1711.             {
  1712.                ctrlData.mask_mc = mask = ctrl["mask_mc"];
  1713.             }
  1714.             catch(re:ReferenceError)
  1715.             {
  1716.                ctrlData.mask_mc = null;
  1717.             }
  1718.             if(ctrlData.mask_mc == null)
  1719.             {
  1720.                maskSprite = new Sprite();
  1721.                ctrlData.mask_mc = mask = maskSprite;
  1722.                maskSprite.graphics.beginFill(16777215);
  1723.                maskSprite.graphics.drawRect(0,0,1,1);
  1724.                maskSprite.graphics.endFill();
  1725.                barData = ctrlDataDict[fill];
  1726.                maskSprite.x = barData.origX;
  1727.                maskSprite.y = barData.origY;
  1728.                maskSprite.width = barData.origWidth;
  1729.                maskSprite.height = barData.origHeight;
  1730.                maskSprite.visible = false;
  1731.                fill.parent.addChild(maskSprite);
  1732.                fill.mask = maskSprite;
  1733.             }
  1734.             if(ctrlData.mask_mc != null)
  1735.             {
  1736.                flvplayback_internal::calcBarMargins(ctrl,"mask",true);
  1737.             }
  1738.          }
  1739.          fillData = ctrlDataDict[fill];
  1740.          maskData = ctrlDataDict[mask];
  1741.          try
  1742.          {
  1743.             slideReveal = Boolean(fill["slideReveal"]);
  1744.          }
  1745.          catch(re:ReferenceError)
  1746.          {
  1747.             slideReveal = false;
  1748.          }
  1749.          if(fill.parent == ctrl)
  1750.          {
  1751.             if(slideReveal)
  1752.             {
  1753.                fill.x = maskData.origX - fillData.origWidth + fillData.origWidth * percent / 100;
  1754.             }
  1755.             else
  1756.             {
  1757.                mask.width = fillData.origWidth * percent / 100;
  1758.             }
  1759.          }
  1760.          else if(fill.parent == ctrl.parent)
  1761.          {
  1762.             if(slideReveal)
  1763.             {
  1764.                mask.x = ctrl.x + maskData.leftMargin;
  1765.                mask.y = ctrl.y + maskData.topMargin;
  1766.                mask.width = ctrl.width - maskData.rightMargin - maskData.leftMargin;
  1767.                mask.height = ctrl.height - maskData.topMargin - maskData.bottomMargin;
  1768.                fill.x = mask.x - fillData.origWidth + maskData.origWidth * percent / 100;
  1769.                fill.y = ctrl.y + fillData.topMargin;
  1770.             }
  1771.             else
  1772.             {
  1773.                fill.x = ctrl.x + fillData.leftMargin;
  1774.                fill.y = ctrl.y + fillData.topMargin;
  1775.                mask.x = fill.x;
  1776.                mask.y = fill.y;
  1777.                mask.width = (ctrl.width - fillData.rightMargin - fillData.leftMargin) * percent / 100;
  1778.                mask.height = ctrl.height - fillData.topMargin - fillData.bottomMargin;
  1779.             }
  1780.          }
  1781.       }
  1782.       
  1783.       flvplayback_internal function calcPercentageFromHandle(param1:Sprite) : void
  1784.       {
  1785.          var _loc2_:ControlData = null;
  1786.          var _loc3_:Sprite = null;
  1787.          var _loc4_:ControlData = null;
  1788.          var _loc5_:Number = NaN;
  1789.          var _loc6_:Number = NaN;
  1790.          var _loc7_:Number = NaN;
  1791.          if(param1 == null)
  1792.          {
  1793.             return;
  1794.          }
  1795.          _loc2_ = ctrlDataDict[param1];
  1796.          if(param1["calcPercentageFromHandle"] is Function && Boolean(param1["calcPercentageFromHandle"]()))
  1797.          {
  1798.             if(_loc2_.percentage < 0)
  1799.             {
  1800.                _loc2_.percentage = 0;
  1801.             }
  1802.             if(_loc2_.percentage > 100)
  1803.             {
  1804.                _loc2_.percentage = 100;
  1805.             }
  1806.             return;
  1807.          }
  1808.          _loc3_ = _loc2_.handle_mc;
  1809.          if(_loc3_ == null)
  1810.          {
  1811.             return;
  1812.          }
  1813.          _loc4_ = ctrlDataDict[_loc3_];
  1814.          _loc6_ = (_loc5_ = isNaN(_loc2_.origWidth) ? param1.width : _loc2_.origWidth) - _loc4_.rightMargin - _loc4_.leftMargin;
  1815.          _loc7_ = _loc3_.x - (param1.x + _loc4_.leftMargin);
  1816.          _loc2_.percentage = _loc7_ / _loc6_ * 100;
  1817.          if(_loc2_.percentage < 0)
  1818.          {
  1819.             _loc2_.percentage = 0;
  1820.          }
  1821.          if(_loc2_.percentage > 100)
  1822.          {
  1823.             _loc2_.percentage = 100;
  1824.          }
  1825.          if(_loc2_.fullness_mc != null)
  1826.          {
  1827.             flvplayback_internal::positionBar(param1,"fullness",_loc2_.percentage);
  1828.          }
  1829.       }
  1830.       
  1831.       flvplayback_internal function handleRelease(param1:int) : void
  1832.       {
  1833.          var _loc2_:int = 0;
  1834.          _loc2_ = int(flvplayback_internal::_vc.activeVideoPlayerIndex);
  1835.          flvplayback_internal::_vc.activeVideoPlayerIndex = flvplayback_internal::_vc.visibleVideoPlayerIndex;
  1836.          if(param1 == SEEK_BAR)
  1837.          {
  1838.             flvplayback_internal::seekBarListener(null);
  1839.          }
  1840.          else if(param1 == VOLUME_BAR)
  1841.          {
  1842.             flvplayback_internal::volumeBarListener(null);
  1843.          }
  1844.          flvplayback_internal::stopHandleDrag(flvplayback_internal::controls[param1]);
  1845.          flvplayback_internal::_vc.activeVideoPlayerIndex = _loc2_;
  1846.          if(param1 == SEEK_BAR)
  1847.          {
  1848.             flvplayback_internal::_vc.flvplayback_internal::_scrubFinish();
  1849.          }
  1850.       }
  1851.       
  1852.       flvplayback_internal function setTwoButtonHolderSkin(param1:int, param2:int, param3:String, param4:int, param5:String) : Sprite
  1853.       {
  1854.          var _loc6_:Sprite = null;
  1855.          var _loc7_:Sprite = null;
  1856.          var _loc8_:ControlData = null;
  1857.          _loc7_ = new Sprite();
  1858.          _loc8_ = new ControlData(this,_loc7_,null,param1);
  1859.          ctrlDataDict[_loc7_] = _loc8_;
  1860.          flvplayback_internal::skin_mc.addChild(_loc7_);
  1861.          (_loc6_ = flvplayback_internal::setupButtonSkin(param2)).name = param3;
  1862.          _loc6_.visible = true;
  1863.          _loc7_.addChild(_loc6_);
  1864.          (_loc6_ = flvplayback_internal::setupButtonSkin(param4)).name = param5;
  1865.          _loc6_.visible = false;
  1866.          _loc7_.addChild(_loc6_);
  1867.          return _loc7_;
  1868.       }
  1869.       
  1870.       flvplayback_internal function skinAutoHideHitTest(param1:TimerEvent, param2:Boolean = true) : void
  1871.       {
  1872.          var visibleVP:VideoPlayer = null;
  1873.          var hit:Boolean = false;
  1874.          var e:TimerEvent = param1;
  1875.          var doFade:Boolean = param2;
  1876.          try
  1877.          {
  1878.             if(!flvplayback_internal::__visible)
  1879.             {
  1880.                flvplayback_internal::skin_mc.visible = false;
  1881.             }
  1882.             else if(flvplayback_internal::_vc.stage != null)
  1883.             {
  1884.                visibleVP = flvplayback_internal::_vc.getVideoPlayer(flvplayback_internal::_vc.visibleVideoPlayerIndex);
  1885.                hit = visibleVP.hitTestPoint(flvplayback_internal::_vc.stage.mouseX,flvplayback_internal::_vc.stage.mouseY,true);
  1886.                if(flvplayback_internal::_fullScreen && flvplayback_internal::_fullScreenTakeOver && e != null)
  1887.                {
  1888.                   if(flvplayback_internal::_vc.stage.mouseX == flvplayback_internal::_skinAutoHideMouseX && flvplayback_internal::_vc.stage.mouseY == flvplayback_internal::_skinAutoHideMouseY)
  1889.                   {
  1890.                      if(getTimer() - flvplayback_internal::_skinAutoHideLastMotionTime > flvplayback_internal::_skinAutoHideMotionTimeout)
  1891.                      {
  1892.                         hit = false;
  1893.                      }
  1894.                   }
  1895.                   else
  1896.                   {
  1897.                      flvplayback_internal::_skinAutoHideLastMotionTime = getTimer();
  1898.                      flvplayback_internal::_skinAutoHideMouseX = flvplayback_internal::_vc.stage.mouseX;
  1899.                      flvplayback_internal::_skinAutoHideMouseY = flvplayback_internal::_vc.stage.mouseY;
  1900.                   }
  1901.                }
  1902.                if(!hit && flvplayback_internal::border_mc != null)
  1903.                {
  1904.                   hit = flvplayback_internal::border_mc.hitTestPoint(flvplayback_internal::_vc.stage.mouseX,flvplayback_internal::_vc.stage.mouseY,true);
  1905.                   if(hit && flvplayback_internal::_fullScreen && flvplayback_internal::_fullScreenTakeOver)
  1906.                   {
  1907.                      flvplayback_internal::_skinAutoHideLastMotionTime = getTimer();
  1908.                   }
  1909.                }
  1910.                if(!doFade || flvplayback_internal::_skinFadingMaxTime <= 0)
  1911.                {
  1912.                   flvplayback_internal::_skinFadingTimer.stop();
  1913.                   flvplayback_internal::skin_mc.visible = hit;
  1914.                   flvplayback_internal::skin_mc.alpha = 1;
  1915.                }
  1916.                else if(!(hit && flvplayback_internal::skin_mc.visible && (!flvplayback_internal::_skinFadingTimer.running || flvplayback_internal::_skinFadingIn) || !hit && (!flvplayback_internal::skin_mc.visible || flvplayback_internal::_skinFadingTimer.running && !flvplayback_internal::_skinFadingIn)))
  1917.                {
  1918.                   flvplayback_internal::_skinFadingTimer.stop();
  1919.                   flvplayback_internal::_skinFadingIn = hit;
  1920.                   if(flvplayback_internal::_skinFadingIn && flvplayback_internal::skin_mc.alpha == 1)
  1921.                   {
  1922.                      flvplayback_internal::skin_mc.alpha = 0;
  1923.                   }
  1924.                   flvplayback_internal::_skinFadeStartTime = getTimer();
  1925.                   flvplayback_internal::_skinFadingTimer.start();
  1926.                   flvplayback_internal::skin_mc.visible = true;
  1927.                }
  1928.             }
  1929.          }
  1930.          catch(se:SecurityError)
  1931.          {
  1932.             flvplayback_internal::_skinAutoHideTimer.stop();
  1933.             flvplayback_internal::_skinFadingTimer.stop();
  1934.             flvplayback_internal::skin_mc.visible = flvplayback_internal::__visible;
  1935.             flvplayback_internal::skin_mc.alpha = 1;
  1936.          }
  1937.       }
  1938.       
  1939.       public function set seekBarInterval(param1:Number) : void
  1940.       {
  1941.          if(flvplayback_internal::_seekBarTimer.delay == param1)
  1942.          {
  1943.             return;
  1944.          }
  1945.          flvplayback_internal::_seekBarTimer.delay = param1;
  1946.       }
  1947.       
  1948.       flvplayback_internal function layoutControl(param1:DisplayObject) : void
  1949.       {
  1950.          var _loc2_:ControlData = null;
  1951.          var _loc3_:Rectangle = null;
  1952.          var _loc4_:Sprite = null;
  1953.          var _loc5_:Rectangle = null;
  1954.          if(param1 == null)
  1955.          {
  1956.             return;
  1957.          }
  1958.          _loc2_ = ctrlDataDict[param1];
  1959.          if(_loc2_ == null)
  1960.          {
  1961.             return;
  1962.          }
  1963.          if(_loc2_.avatar == null)
  1964.          {
  1965.             return;
  1966.          }
  1967.          _loc3_ = flvplayback_internal::calcLayoutControl(param1);
  1968.          param1.x = _loc3_.x;
  1969.          param1.y = _loc3_.y;
  1970.          param1.width = _loc3_.width;
  1971.          param1.height = _loc3_.height;
  1972.          switch(_loc2_.index)
  1973.          {
  1974.             case SEEK_BAR:
  1975.             case VOLUME_BAR:
  1976.                if(_loc2_.hit_mc != null && _loc2_.hit_mc.parent == flvplayback_internal::skin_mc)
  1977.                {
  1978.                   _loc4_ = _loc2_.hit_mc;
  1979.                   _loc5_ = flvplayback_internal::calcLayoutControl(_loc4_);
  1980.                   _loc4_.x = _loc5_.x;
  1981.                   _loc4_.y = _loc5_.y;
  1982.                   _loc4_.width = _loc5_.width;
  1983.                   _loc4_.height = _loc5_.height;
  1984.                }
  1985.                if(_loc2_.progress_mc != null)
  1986.                {
  1987.                   if(isNaN(flvplayback_internal::_progressPercent))
  1988.                   {
  1989.                      flvplayback_internal::_progressPercent = flvplayback_internal::_vc.isRTMP ? 100 : 0;
  1990.                   }
  1991.                   flvplayback_internal::positionBar(Sprite(param1),"progress",flvplayback_internal::_progressPercent);
  1992.                }
  1993.                flvplayback_internal::positionHandle(Sprite(param1));
  1994.                break;
  1995.             case BUFFERING_BAR:
  1996.                flvplayback_internal::positionMaskedFill(param1,100);
  1997.          }
  1998.       }
  1999.       
  2000.       public function set fullScreenSkinDelay(param1:int) : void
  2001.       {
  2002.          flvplayback_internal::_skinAutoHideMotionTimeout = param1;
  2003.       }
  2004.       
  2005.       flvplayback_internal function captureMouseEvent(param1:MouseEvent) : void
  2006.       {
  2007.          param1.stopPropagation();
  2008.       }
  2009.       
  2010.       flvplayback_internal function handleMouseUp(param1:MouseEvent) : void
  2011.       {
  2012.          var _loc2_:Sprite = null;
  2013.          var _loc3_:ControlData = null;
  2014.          _loc2_ = flvplayback_internal::controls[flvplayback_internal::mouseCaptureCtrl];
  2015.          if(_loc2_ != null)
  2016.          {
  2017.             _loc3_ = ctrlDataDict[_loc2_];
  2018.             _loc3_.state = _loc2_.hitTestPoint(param1.stageX,param1.stageY,true) ? OVER_STATE : NORMAL_STATE;
  2019.             flvplayback_internal::skinButtonControl(_loc2_);
  2020.             switch(flvplayback_internal::mouseCaptureCtrl)
  2021.             {
  2022.                case SEEK_BAR_HANDLE:
  2023.                case SEEK_BAR_HIT:
  2024.                   flvplayback_internal::handleRelease(SEEK_BAR);
  2025.                   break;
  2026.                case VOLUME_BAR_HANDLE:
  2027.                case VOLUME_BAR_HIT:
  2028.                   flvplayback_internal::handleRelease(VOLUME_BAR);
  2029.             }
  2030.          }
  2031.          param1.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,flvplayback_internal::captureMouseEvent,true);
  2032.          param1.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,flvplayback_internal::captureMouseEvent,true);
  2033.          param1.currentTarget.removeEventListener(MouseEvent.MOUSE_OVER,flvplayback_internal::captureMouseEvent,true);
  2034.          param1.currentTarget.removeEventListener(MouseEvent.MOUSE_UP,flvplayback_internal::handleMouseUp);
  2035.          param1.currentTarget.removeEventListener(MouseEvent.ROLL_OUT,flvplayback_internal::captureMouseEvent,true);
  2036.          param1.currentTarget.removeEventListener(MouseEvent.ROLL_OVER,flvplayback_internal::captureMouseEvent,true);
  2037.       }
  2038.       
  2039.       public function set visible(param1:Boolean) : void
  2040.       {
  2041.          if(flvplayback_internal::__visible == param1)
  2042.          {
  2043.             return;
  2044.          }
  2045.          flvplayback_internal::__visible = param1;
  2046.          if(!flvplayback_internal::__visible)
  2047.          {
  2048.             flvplayback_internal::skin_mc.visible = false;
  2049.          }
  2050.          else
  2051.          {
  2052.             flvplayback_internal::setupSkinAutoHide(false);
  2053.          }
  2054.       }
  2055.       
  2056.       public function get bufferingDelayInterval() : Number
  2057.       {
  2058.          return flvplayback_internal::_bufferingDelayTimer.delay;
  2059.       }
  2060.       
  2061.       public function set fullScreenBackgroundColor(param1:uint) : void
  2062.       {
  2063.          if(flvplayback_internal::_fullScreenBgColor != param1)
  2064.          {
  2065.             flvplayback_internal::_fullScreenBgColor = param1;
  2066.             if(!flvplayback_internal::_vc)
  2067.             {
  2068.             }
  2069.          }
  2070.       }
  2071.       
  2072.       public function get fullScreenTakeOver() : Boolean
  2073.       {
  2074.          return flvplayback_internal::_fullScreenTakeOver;
  2075.       }
  2076.       
  2077.       public function set skin(param1:String) : void
  2078.       {
  2079.          var _loc2_:String = null;
  2080.          if(param1 == null)
  2081.          {
  2082.             flvplayback_internal::removeSkin();
  2083.             flvplayback_internal::_skin = null;
  2084.             flvplayback_internal::_skinReady = true;
  2085.          }
  2086.          else
  2087.          {
  2088.             _loc2_ = String(param1);
  2089.             if(param1 == flvplayback_internal::_skin)
  2090.             {
  2091.                return;
  2092.             }
  2093.             flvplayback_internal::removeSkin();
  2094.             flvplayback_internal::_skin = String(param1);
  2095.             flvplayback_internal::_skinReady = flvplayback_internal::_skin == "";
  2096.             if(!flvplayback_internal::_skinReady)
  2097.             {
  2098.                flvplayback_internal::downloadSkin();
  2099.             }
  2100.          }
  2101.       }
  2102.       
  2103.       public function set volumeBarInterval(param1:Number) : void
  2104.       {
  2105.          if(flvplayback_internal::_volumeBarTimer.delay == param1)
  2106.          {
  2107.             return;
  2108.          }
  2109.          flvplayback_internal::_volumeBarTimer.delay = param1;
  2110.       }
  2111.       
  2112.       flvplayback_internal function setSkin(param1:int, param2:DisplayObject) : void
  2113.       {
  2114.          var _loc3_:Sprite = null;
  2115.          var _loc4_:ControlData = null;
  2116.          var _loc5_:String = null;
  2117.          if(param1 >= NUM_CONTROLS)
  2118.          {
  2119.             return;
  2120.          }
  2121.          if(param1 < NUM_BUTTONS)
  2122.          {
  2123.             _loc3_ = flvplayback_internal::setupButtonSkin(param1);
  2124.             flvplayback_internal::skin_mc.addChild(_loc3_);
  2125.             _loc4_ = ctrlDataDict[_loc3_];
  2126.          }
  2127.          else
  2128.          {
  2129.             switch(param1)
  2130.             {
  2131.                case PLAY_PAUSE_BUTTON:
  2132.                   _loc3_ = flvplayback_internal::setTwoButtonHolderSkin(param1,PLAY_BUTTON,"play_mc",PAUSE_BUTTON,"pause_mc");
  2133.                   _loc4_ = ctrlDataDict[_loc3_];
  2134.                   break;
  2135.                case FULL_SCREEN_BUTTON:
  2136.                   _loc3_ = flvplayback_internal::setTwoButtonHolderSkin(param1,FULL_SCREEN_ON_BUTTON,"on_mc",FULL_SCREEN_OFF_BUTTON,"off_mc");
  2137.                   _loc4_ = ctrlDataDict[_loc3_];
  2138.                   break;
  2139.                case MUTE_BUTTON:
  2140.                   _loc3_ = flvplayback_internal::setTwoButtonHolderSkin(param1,MUTE_ON_BUTTON,"on_mc",MUTE_OFF_BUTTON,"off_mc");
  2141.                   _loc4_ = ctrlDataDict[_loc3_];
  2142.                   break;
  2143.                case SEEK_BAR:
  2144.                case VOLUME_BAR:
  2145.                   _loc5_ = String(flvplayback_internal::skinClassPrefixes[param1]);
  2146.                   _loc3_ = Sprite(flvplayback_internal::createSkin(flvplayback_internal::skinTemplate,_loc5_));
  2147.                   if(_loc3_ != null)
  2148.                   {
  2149.                      flvplayback_internal::skin_mc.addChild(_loc3_);
  2150.                      _loc4_ = new ControlData(this,_loc3_,null,param1);
  2151.                      ctrlDataDict[_loc3_] = _loc4_;
  2152.                      _loc4_.progress_mc = flvplayback_internal::setupBarSkinPart(_loc3_,param2,flvplayback_internal::skinTemplate,_loc5_ + "Progress","progress_mc");
  2153.                      _loc4_.fullness_mc = flvplayback_internal::setupBarSkinPart(_loc3_,param2,flvplayback_internal::skinTemplate,_loc5_ + "Fullness","fullness_mc");
  2154.                      _loc4_.hit_mc = Sprite(flvplayback_internal::setupBarSkinPart(_loc3_,param2,flvplayback_internal::skinTemplate,_loc5_ + "Hit","hit_mc"));
  2155.                      _loc4_.handle_mc = Sprite(flvplayback_internal::setupBarSkinPart(_loc3_,param2,flvplayback_internal::skinTemplate,_loc5_ + "Handle","handle_mc",true));
  2156.                      _loc3_.width = param2.width;
  2157.                      _loc3_.height = param2.height;
  2158.                   }
  2159.                   break;
  2160.                case BUFFERING_BAR:
  2161.                   _loc5_ = String(flvplayback_internal::skinClassPrefixes[param1]);
  2162.                   _loc3_ = Sprite(flvplayback_internal::createSkin(flvplayback_internal::skinTemplate,_loc5_));
  2163.                   if(_loc3_ != null)
  2164.                   {
  2165.                      flvplayback_internal::skin_mc.addChild(_loc3_);
  2166.                      _loc4_ = new ControlData(this,_loc3_,null,param1);
  2167.                      ctrlDataDict[_loc3_] = _loc4_;
  2168.                      _loc4_.fill_mc = flvplayback_internal::setupBarSkinPart(_loc3_,param2,flvplayback_internal::skinTemplate,_loc5_ + "Fill","fill_mc");
  2169.                      _loc3_.width = param2.width;
  2170.                      _loc3_.height = param2.height;
  2171.                   }
  2172.             }
  2173.          }
  2174.          _loc4_.avatar = param2;
  2175.          ctrlDataDict[_loc3_] = _loc4_;
  2176.          flvplayback_internal::delayedControls[param1] = _loc3_;
  2177.       }
  2178.       
  2179.       public function set bufferingBarHidesAndDisablesOthers(param1:Boolean) : void
  2180.       {
  2181.          flvplayback_internal::_bufferingBarHides = param1;
  2182.       }
  2183.       
  2184.       flvplayback_internal function handleSoundEvent(param1:SoundEvent) : void
  2185.       {
  2186.          var _loc2_:Sprite = null;
  2187.          var _loc3_:ControlData = null;
  2188.          if(flvplayback_internal::_isMuted && param1.soundTransform.volume > 0)
  2189.          {
  2190.             flvplayback_internal::_isMuted = false;
  2191.             flvplayback_internal::setEnabledAndVisibleForState(MUTE_OFF_BUTTON,VideoState.PLAYING);
  2192.             flvplayback_internal::skinButtonControl(flvplayback_internal::controls[MUTE_OFF_BUTTON]);
  2193.             flvplayback_internal::setEnabledAndVisibleForState(MUTE_ON_BUTTON,VideoState.PLAYING);
  2194.             flvplayback_internal::skinButtonControl(flvplayback_internal::controls[MUTE_ON_BUTTON]);
  2195.          }
  2196.          _loc2_ = flvplayback_internal::controls[VOLUME_BAR];
  2197.          if(_loc2_ != null)
  2198.          {
  2199.             _loc3_ = ctrlDataDict[_loc2_];
  2200.             _loc3_.percentage = (flvplayback_internal::_isMuted ? flvplayback_internal::cachedSoundLevel : param1.soundTransform.volume) * 100;
  2201.             if(_loc3_.percentage < 0)
  2202.             {
  2203.                _loc3_.percentage = 0;
  2204.             }
  2205.             else if(_loc3_.percentage > 100)
  2206.             {
  2207.                _loc3_.percentage = 100;
  2208.             }
  2209.             flvplayback_internal::positionHandle(_loc2_);
  2210.          }
  2211.       }
  2212.       
  2213.       flvplayback_internal function stopHandleDrag(param1:Sprite) : void
  2214.       {
  2215.          var ctrlData:ControlData = null;
  2216.          var handle:Sprite = null;
  2217.          var ctrl:Sprite = param1;
  2218.          if(ctrl == null)
  2219.          {
  2220.             return;
  2221.          }
  2222.          ctrlData = ctrlDataDict[ctrl];
  2223.          try
  2224.          {
  2225.             if(ctrl["stopHandleDrag"] is Function && Boolean(ctrl["stopHandleDrag"]()))
  2226.             {
  2227.                ctrlData.isDragging = false;
  2228.                return;
  2229.             }
  2230.          }
  2231.          catch(re:ReferenceError)
  2232.          {
  2233.          }
  2234.          handle = ctrlData.handle_mc;
  2235.          if(handle == null)
  2236.          {
  2237.             return;
  2238.          }
  2239.          handle.stopDrag();
  2240.          ctrlData.isDragging = false;
  2241.       }
  2242.       
  2243.       public function set skinBackgroundAlpha(param1:Number) : void
  2244.       {
  2245.          if(flvplayback_internal::borderAlpha != param1)
  2246.          {
  2247.             flvplayback_internal::borderAlpha = param1;
  2248.             flvplayback_internal::borderColorTransform.alphaOffset = 255 * param1;
  2249.             flvplayback_internal::borderPrevRect = null;
  2250.             flvplayback_internal::layoutSkin();
  2251.          }
  2252.       }
  2253.       
  2254.       public function getControl(param1:int) : Sprite
  2255.       {
  2256.          return flvplayback_internal::controls[param1];
  2257.       }
  2258.       
  2259.       public function set skinScaleMaximum(param1:Number) : void
  2260.       {
  2261.          flvplayback_internal::_skinScaleMaximum = param1;
  2262.       }
  2263.       
  2264.       flvplayback_internal function handleLoad(param1:Event) : void
  2265.       {
  2266.          var i:int = 0;
  2267.          var dispObj:DisplayObject = null;
  2268.          var index:Number = NaN;
  2269.          var e:Event = param1;
  2270.          try
  2271.          {
  2272.             flvplayback_internal::skin_mc = new Sprite();
  2273.             if(e != null)
  2274.             {
  2275.                flvplayback_internal::skinTemplate = Sprite(flvplayback_internal::skinLoader.content);
  2276.             }
  2277.             flvplayback_internal::layout_mc = flvplayback_internal::skinTemplate;
  2278.             customClips = new Array();
  2279.             flvplayback_internal::delayedControls = new Array();
  2280.             i = 0;
  2281.             while(i < flvplayback_internal::layout_mc.numChildren)
  2282.             {
  2283.                dispObj = flvplayback_internal::layout_mc.getChildAt(i);
  2284.                index = Number(flvplayback_internal::layoutNameToIndexMappings[dispObj.name]);
  2285.                if(!isNaN(index))
  2286.                {
  2287.                   flvplayback_internal::setSkin(int(index),dispObj);
  2288.                }
  2289.                else if(dispObj.name != "video_mc")
  2290.                {
  2291.                   flvplayback_internal::setCustomClip(dispObj);
  2292.                }
  2293.                i++;
  2294.             }
  2295.             flvplayback_internal::skinLoadDelayCount = 0;
  2296.             flvplayback_internal::_vc.addEventListener(Event.ENTER_FRAME,flvplayback_internal::finishLoad);
  2297.          }
  2298.          catch(err:Error)
  2299.          {
  2300.             flvplayback_internal::_vc.flvplayback_internal::skinError(err.message);
  2301.             flvplayback_internal::removeSkin();
  2302.          }
  2303.       }
  2304.       
  2305.       flvplayback_internal function calcBarMargins(param1:DisplayObject, param2:String, param3:Boolean) : void
  2306.       {
  2307.          var ctrlData:ControlData = null;
  2308.          var bar:DisplayObject = null;
  2309.          var barData:ControlData = null;
  2310.          var ctrl:DisplayObject = param1;
  2311.          var type:String = param2;
  2312.          var symmetricMargins:Boolean = param3;
  2313.          if(ctrl == null)
  2314.          {
  2315.             return;
  2316.          }
  2317.          ctrlData = ctrlDataDict[ctrl];
  2318.          bar = ctrlData[type + "_mc"];
  2319.          if(bar == null)
  2320.          {
  2321.             try
  2322.             {
  2323.                bar = ctrl[type + "_mc"];
  2324.             }
  2325.             catch(re:ReferenceError)
  2326.             {
  2327.                bar = null;
  2328.             }
  2329.             if(bar == null)
  2330.             {
  2331.                return;
  2332.             }
  2333.             ctrlData[type + "_mc"] = bar;
  2334.          }
  2335.          barData = ctrlDataDict[bar];
  2336.          if(barData == null)
  2337.          {
  2338.             barData = new ControlData(this,bar,ctrl,-1);
  2339.             ctrlDataDict[bar] = barData;
  2340.          }
  2341.          barData.leftMargin = flvplayback_internal::getNumberPropSafe(ctrl,type + "LeftMargin");
  2342.          if(isNaN(barData.leftMargin) && bar.parent == ctrl.parent)
  2343.          {
  2344.             barData.leftMargin = bar.x - ctrl.x;
  2345.          }
  2346.          barData.rightMargin = flvplayback_internal::getNumberPropSafe(ctrl,type + "RightMargin");
  2347.          if(isNaN(barData.rightMargin))
  2348.          {
  2349.             if(symmetricMargins)
  2350.             {
  2351.                barData.rightMargin = barData.leftMargin;
  2352.             }
  2353.             else if(bar.parent == ctrl.parent)
  2354.             {
  2355.                barData.rightMargin = ctrl.width - bar.width - bar.x + ctrl.x;
  2356.             }
  2357.          }
  2358.          barData.topMargin = flvplayback_internal::getNumberPropSafe(ctrl,type + "TopMargin");
  2359.          if(isNaN(barData.topMargin) && bar.parent == ctrl.parent)
  2360.          {
  2361.             barData.topMargin = bar.y - ctrl.y;
  2362.          }
  2363.          barData.bottomMargin = flvplayback_internal::getNumberPropSafe(ctrl,type + "BottomMargin");
  2364.          if(isNaN(barData.bottomMargin))
  2365.          {
  2366.             if(symmetricMargins)
  2367.             {
  2368.                barData.bottomMargin = barData.topMargin;
  2369.             }
  2370.             else if(bar.parent == ctrl.parent)
  2371.             {
  2372.                barData.bottomMargin = ctrl.height - bar.height - bar.y + ctrl.y;
  2373.             }
  2374.          }
  2375.          barData.origX = flvplayback_internal::getNumberPropSafe(ctrl,type + "X");
  2376.          if(isNaN(barData.origX))
  2377.          {
  2378.             if(bar.parent == ctrl.parent)
  2379.             {
  2380.                barData.origX = bar.x - ctrl.x;
  2381.             }
  2382.             else if(bar.parent == ctrl)
  2383.             {
  2384.                barData.origX = bar.x;
  2385.             }
  2386.          }
  2387.          barData.origY = flvplayback_internal::getNumberPropSafe(ctrl,type + "Y");
  2388.          if(isNaN(barData.origY))
  2389.          {
  2390.             if(bar.parent == ctrl.parent)
  2391.             {
  2392.                barData.origY = bar.y - ctrl.y;
  2393.             }
  2394.             else if(bar.parent == ctrl)
  2395.             {
  2396.                barData.origY = bar.y;
  2397.             }
  2398.          }
  2399.          barData.origWidth = bar.width;
  2400.          barData.origHeight = bar.height;
  2401.          barData.origScaleX = bar.scaleX;
  2402.          barData.origScaleY = bar.scaleY;
  2403.       }
  2404.       
  2405.       public function set skinBackgroundColor(param1:uint) : void
  2406.       {
  2407.          if(flvplayback_internal::borderColor != param1)
  2408.          {
  2409.             flvplayback_internal::borderColor = param1;
  2410.             flvplayback_internal::borderColorTransform.redOffset = flvplayback_internal::borderColor >> 16 & 255;
  2411.             flvplayback_internal::borderColorTransform.greenOffset = flvplayback_internal::borderColor >> 8 & 255;
  2412.             flvplayback_internal::borderColorTransform.blueOffset = flvplayback_internal::borderColor & 255;
  2413.             flvplayback_internal::borderPrevRect = null;
  2414.             flvplayback_internal::layoutSkin();
  2415.          }
  2416.       }
  2417.       
  2418.       public function set volumeBarScrubTolerance(param1:Number) : void
  2419.       {
  2420.          flvplayback_internal::_volumeBarScrubTolerance = param1;
  2421.       }
  2422.       
  2423.       flvplayback_internal function finishAddBufferingBar(param1:Event = null) : void
  2424.       {
  2425.          var _loc2_:Sprite = null;
  2426.          if(param1 != null)
  2427.          {
  2428.             param1.currentTarget.removeEventListener(Event.ENTER_FRAME,flvplayback_internal::finishAddBufferingBar);
  2429.          }
  2430.          _loc2_ = flvplayback_internal::controls[BUFFERING_BAR];
  2431.          flvplayback_internal::calcBarMargins(_loc2_,"fill",true);
  2432.          flvplayback_internal::fixUpBar(_loc2_,"fill",_loc2_,"fill_mc");
  2433.          flvplayback_internal::positionMaskedFill(_loc2_,100);
  2434.       }
  2435.       
  2436.       flvplayback_internal function handleButtonEvent(param1:MouseEvent) : void
  2437.       {
  2438.          var ctrlData:ControlData = null;
  2439.          var topLevel:DisplayObject = null;
  2440.          var e:MouseEvent = param1;
  2441.          ctrlData = ctrlDataDict[e.currentTarget];
  2442.          switch(e.type)
  2443.          {
  2444.             case MouseEvent.ROLL_OVER:
  2445.                ctrlData.state = OVER_STATE;
  2446.                break;
  2447.             case MouseEvent.ROLL_OUT:
  2448.                ctrlData.state = NORMAL_STATE;
  2449.                break;
  2450.             case MouseEvent.MOUSE_DOWN:
  2451.                ctrlData.state = DOWN_STATE;
  2452.                flvplayback_internal::mouseCaptureCtrl = ctrlData.index;
  2453.                switch(flvplayback_internal::mouseCaptureCtrl)
  2454.                {
  2455.                   case SEEK_BAR_HANDLE:
  2456.                   case SEEK_BAR_HIT:
  2457.                   case VOLUME_BAR_HANDLE:
  2458.                   case VOLUME_BAR_HIT:
  2459.                      flvplayback_internal::dispatchMessage(ctrlData.index);
  2460.                }
  2461.                topLevel = flvplayback_internal::_vc.stage;
  2462.                try
  2463.                {
  2464.                   topLevel.addEventListener(MouseEvent.MOUSE_DOWN,flvplayback_internal::captureMouseEvent,true);
  2465.                }
  2466.                catch(se:SecurityError)
  2467.                {
  2468.                   topLevel = flvplayback_internal::_vc.root;
  2469.                   topLevel.addEventListener(MouseEvent.MOUSE_DOWN,flvplayback_internal::captureMouseEvent,true);
  2470.                }
  2471.                topLevel.addEventListener(MouseEvent.MOUSE_OUT,flvplayback_internal::captureMouseEvent,true);
  2472.                topLevel.addEventListener(MouseEvent.MOUSE_OVER,flvplayback_internal::captureMouseEvent,true);
  2473.                topLevel.addEventListener(MouseEvent.MOUSE_UP,flvplayback_internal::handleMouseUp);
  2474.                topLevel.addEventListener(MouseEvent.ROLL_OUT,flvplayback_internal::captureMouseEvent,true);
  2475.                topLevel.addEventListener(MouseEvent.ROLL_OVER,flvplayback_internal::captureMouseEvent,true);
  2476.                break;
  2477.             case MouseEvent.CLICK:
  2478.                switch(flvplayback_internal::mouseCaptureCtrl)
  2479.                {
  2480.                   case SEEK_BAR_HANDLE:
  2481.                   case SEEK_BAR_HIT:
  2482.                   case VOLUME_BAR_HANDLE:
  2483.                   case VOLUME_BAR_HIT:
  2484.                      break;
  2485.                   default:
  2486.                      flvplayback_internal::dispatchMessage(ctrlData.index);
  2487.                }
  2488.                return;
  2489.          }
  2490.          flvplayback_internal::skinButtonControl(e.currentTarget);
  2491.       }
  2492.       
  2493.       flvplayback_internal function applySkinState(param1:ControlData, param2:DisplayObject) : void
  2494.       {
  2495.          if(param2 != param1.currentState_mc)
  2496.          {
  2497.             if(param1.currentState_mc != null)
  2498.             {
  2499.                param1.currentState_mc.visible = false;
  2500.             }
  2501.             param1.currentState_mc = param2;
  2502.             param1.currentState_mc.visible = true;
  2503.          }
  2504.       }
  2505.       
  2506.       flvplayback_internal function handleLoadErrorEvent(param1:ErrorEvent) : void
  2507.       {
  2508.          flvplayback_internal::_skinReady = true;
  2509.          flvplayback_internal::_vc.flvplayback_internal::skinError(param1.toString());
  2510.       }
  2511.       
  2512.       flvplayback_internal function addBarControl(param1:Sprite) : void
  2513.       {
  2514.          var _loc2_:ControlData = null;
  2515.          _loc2_ = ctrlDataDict[param1];
  2516.          _loc2_.isDragging = false;
  2517.          _loc2_.percentage = 0;
  2518.          if(param1.parent == flvplayback_internal::skin_mc && flvplayback_internal::skin_mc != null)
  2519.          {
  2520.             flvplayback_internal::finishAddBarControl(param1);
  2521.          }
  2522.          else
  2523.          {
  2524.             param1.addEventListener(Event.REMOVED_FROM_STAGE,flvplayback_internal::cleanupHandle);
  2525.             param1.addEventListener(Event.ENTER_FRAME,flvplayback_internal::finishAddBarControl);
  2526.          }
  2527.       }
  2528.       
  2529.       flvplayback_internal function handleEvent(param1:Event) : void
  2530.       {
  2531.          var e:Event = param1;
  2532.          switch(e.type)
  2533.          {
  2534.             case Event.ADDED_TO_STAGE:
  2535.                flvplayback_internal::_fullScreen = false;
  2536.                if(flvplayback_internal::_vc.stage != null)
  2537.                {
  2538.                   try
  2539.                   {
  2540.                      flvplayback_internal::_fullScreen = flvplayback_internal::_vc.stage.displayState == StageDisplayState.FULL_SCREEN;
  2541.                      flvplayback_internal::_vc.stage.addEventListener(FullScreenEvent.FULL_SCREEN,flvplayback_internal::handleFullScreenEvent);
  2542.                   }
  2543.                   catch(se:SecurityError)
  2544.                   {
  2545.                   }
  2546.                }
  2547.                if(!flvplayback_internal::_fullScreen)
  2548.                {
  2549.                   flvplayback_internal::_fullScreenAccel = false;
  2550.                }
  2551.                flvplayback_internal::setEnabledAndVisibleForState(FULL_SCREEN_OFF_BUTTON,VideoState.PLAYING);
  2552.                flvplayback_internal::skinButtonControl(flvplayback_internal::controls[FULL_SCREEN_OFF_BUTTON]);
  2553.                flvplayback_internal::setEnabledAndVisibleForState(FULL_SCREEN_ON_BUTTON,VideoState.PLAYING);
  2554.                flvplayback_internal::skinButtonControl(flvplayback_internal::controls[FULL_SCREEN_ON_BUTTON]);
  2555.                if(flvplayback_internal::_fullScreen && flvplayback_internal::_fullScreenTakeOver)
  2556.                {
  2557.                   flvplayback_internal::enterFullScreenTakeOver();
  2558.                }
  2559.                else if(!flvplayback_internal::_fullScreen)
  2560.                {
  2561.                   flvplayback_internal::exitFullScreenTakeOver();
  2562.                }
  2563.                flvplayback_internal::layoutSkin();
  2564.                flvplayback_internal::setupSkinAutoHide(false);
  2565.                break;
  2566.             case Event.REMOVED_FROM_STAGE:
  2567.                flvplayback_internal::_vc.stage.removeEventListener(FullScreenEvent.FULL_SCREEN,flvplayback_internal::handleFullScreenEvent);
  2568.          }
  2569.       }
  2570.       
  2571.       flvplayback_internal function skinButtonControl(param1:Object) : void
  2572.       {
  2573.          var ctrl:Sprite = null;
  2574.          var ctrlData:ControlData = null;
  2575.          var e:Event = null;
  2576.          var ctrlOrEvent:Object = param1;
  2577.          if(ctrlOrEvent == null)
  2578.          {
  2579.             return;
  2580.          }
  2581.          if(ctrlOrEvent is Event)
  2582.          {
  2583.             e = Event(ctrlOrEvent);
  2584.             ctrl = Sprite(e.currentTarget);
  2585.             ctrl.removeEventListener(Event.ENTER_FRAME,flvplayback_internal::skinButtonControl);
  2586.          }
  2587.          else
  2588.          {
  2589.             ctrl = Sprite(ctrlOrEvent);
  2590.          }
  2591.          ctrlData = ctrlDataDict[ctrl];
  2592.          if(ctrlData == null)
  2593.          {
  2594.             return;
  2595.          }
  2596.          try
  2597.          {
  2598.             if(ctrl["placeholder_mc"] != undefined)
  2599.             {
  2600.                ctrl.removeChild(ctrl["placeholder_mc"]);
  2601.                ctrl["placeholder_mc"] = null;
  2602.             }
  2603.          }
  2604.          catch(re:ReferenceError)
  2605.          {
  2606.          }
  2607.          if(ctrlData.state_mc == null)
  2608.          {
  2609.             ctrlData.state_mc = new Array();
  2610.          }
  2611.          if(ctrlData.state_mc[NORMAL_STATE] == undefined)
  2612.          {
  2613.             ctrlData.state_mc[NORMAL_STATE] = flvplayback_internal::setupButtonSkinState(ctrl,ctrl,flvplayback_internal::buttonSkinLinkageIDs[NORMAL_STATE],null);
  2614.          }
  2615.          if(ctrlData.enabled && flvplayback_internal::_controlsEnabled)
  2616.          {
  2617.             if(ctrlData.state_mc[ctrlData.state] == undefined)
  2618.             {
  2619.                ctrlData.state_mc[ctrlData.state] = flvplayback_internal::setupButtonSkinState(ctrl,ctrl,flvplayback_internal::buttonSkinLinkageIDs[ctrlData.state],ctrlData.state_mc[NORMAL_STATE]);
  2620.             }
  2621.             if(ctrlData.state_mc[ctrlData.state] != ctrlData.currentState_mc)
  2622.             {
  2623.                if(ctrlData.currentState_mc != null)
  2624.                {
  2625.                   ctrlData.currentState_mc.visible = false;
  2626.                }
  2627.                ctrlData.currentState_mc = ctrlData.state_mc[ctrlData.state];
  2628.                ctrlData.currentState_mc.visible = true;
  2629.             }
  2630.             flvplayback_internal::applySkinState(ctrlData,ctrlData.state_mc[ctrlData.state]);
  2631.          }
  2632.          else
  2633.          {
  2634.             ctrlData.state = NORMAL_STATE;
  2635.             if(ctrlData.disabled_mc == null)
  2636.             {
  2637.                ctrlData.disabled_mc = flvplayback_internal::setupButtonSkinState(ctrl,ctrl,"disabledLinkageID",ctrlData.state_mc[NORMAL_STATE]);
  2638.             }
  2639.             flvplayback_internal::applySkinState(ctrlData,ctrlData.disabled_mc);
  2640.          }
  2641.       }
  2642.       
  2643.       public function set controlsEnabled(param1:Boolean) : void
  2644.       {
  2645.          var _loc2_:int = 0;
  2646.          if(flvplayback_internal::_controlsEnabled == param1)
  2647.          {
  2648.             return;
  2649.          }
  2650.          flvplayback_internal::_controlsEnabled = param1;
  2651.          _loc2_ = 0;
  2652.          while(_loc2_ < NUM_BUTTONS)
  2653.          {
  2654.             flvplayback_internal::skinButtonControl(flvplayback_internal::controls[_loc2_]);
  2655.             _loc2_++;
  2656.          }
  2657.       }
  2658.       
  2659.       flvplayback_internal function setupSkinAutoHide(param1:Boolean) : void
  2660.       {
  2661.          if(flvplayback_internal::_skinAutoHide && flvplayback_internal::skin_mc != null)
  2662.          {
  2663.             flvplayback_internal::skinAutoHideHitTest(null,param1);
  2664.             flvplayback_internal::_skinAutoHideTimer.start();
  2665.          }
  2666.          else
  2667.          {
  2668.             if(flvplayback_internal::skin_mc != null)
  2669.             {
  2670.                if(param1 && flvplayback_internal::_skinFadingMaxTime > 0 && (!flvplayback_internal::skin_mc.visible || flvplayback_internal::skin_mc.alpha < 1) && flvplayback_internal::__visible)
  2671.                {
  2672.                   flvplayback_internal::_skinFadingTimer.stop();
  2673.                   flvplayback_internal::_skinFadeStartTime = getTimer();
  2674.                   flvplayback_internal::_skinFadingIn = true;
  2675.                   if(flvplayback_internal::skin_mc.alpha == 1)
  2676.                   {
  2677.                      flvplayback_internal::skin_mc.alpha = 0;
  2678.                   }
  2679.                   flvplayback_internal::_skinFadingTimer.start();
  2680.                }
  2681.                else if(flvplayback_internal::_skinFadingMaxTime <= 0)
  2682.                {
  2683.                   flvplayback_internal::_skinFadingTimer.stop();
  2684.                   flvplayback_internal::skin_mc.alpha = 1;
  2685.                }
  2686.                flvplayback_internal::skin_mc.visible = flvplayback_internal::__visible;
  2687.             }
  2688.             flvplayback_internal::_skinAutoHideTimer.stop();
  2689.          }
  2690.       }
  2691.       
  2692.       public function enterFullScreenDisplayState() : void
  2693.       {
  2694.          var theRect:Rectangle = null;
  2695.          var vp:VideoPlayer = null;
  2696.          var effectiveWidth:int = 0;
  2697.          var effectiveHeight:int = 0;
  2698.          var videoAspectRatio:Number = NaN;
  2699.          var screenAspectRatio:Number = NaN;
  2700.          var effectiveMinWidth:int = 0;
  2701.          var effectiveMinHeight:int = 0;
  2702.          var skinScaleMinWidth:int = 0;
  2703.          var skinScaleMinHeight:int = 0;
  2704.          if(!flvplayback_internal::_fullScreen && flvplayback_internal::_vc.stage != null)
  2705.          {
  2706.             if(flvplayback_internal::_fullScreenTakeOver)
  2707.             {
  2708.                try
  2709.                {
  2710.                   theRect = flvplayback_internal::_vc.stage.fullScreenSourceRect;
  2711.                   flvplayback_internal::_fullScreenAccel = true;
  2712.                   vp = flvplayback_internal::_vc.getVideoPlayer(flvplayback_internal::_vc.visibleVideoPlayerIndex);
  2713.                   effectiveWidth = vp.videoWidth;
  2714.                   effectiveHeight = vp.videoHeight;
  2715.                   videoAspectRatio = effectiveWidth / effectiveHeight;
  2716.                   screenAspectRatio = flvplayback_internal::_vc.stage.fullScreenWidth / flvplayback_internal::_vc.stage.fullScreenHeight;
  2717.                   if(videoAspectRatio > screenAspectRatio)
  2718.                   {
  2719.                      effectiveHeight = effectiveWidth / screenAspectRatio;
  2720.                   }
  2721.                   else if(videoAspectRatio < screenAspectRatio)
  2722.                   {
  2723.                      effectiveWidth = effectiveHeight * screenAspectRatio;
  2724.                   }
  2725.                   effectiveMinWidth = int(flvplayback_internal::fullScreenSourceRectMinWidth);
  2726.                   effectiveMinHeight = int(flvplayback_internal::fullScreenSourceRectMinHeight);
  2727.                   if(flvplayback_internal::fullScreenSourceRectMinAspectRatio > screenAspectRatio)
  2728.                   {
  2729.                      effectiveMinHeight = effectiveMinWidth / screenAspectRatio;
  2730.                   }
  2731.                   else if(flvplayback_internal::fullScreenSourceRectMinAspectRatio < screenAspectRatio)
  2732.                   {
  2733.                      effectiveMinWidth = effectiveMinHeight * screenAspectRatio;
  2734.                   }
  2735.                   skinScaleMinWidth = flvplayback_internal::_vc.stage.fullScreenWidth / flvplayback_internal::_skinScaleMaximum;
  2736.                   skinScaleMinHeight = flvplayback_internal::_vc.stage.fullScreenHeight / flvplayback_internal::_skinScaleMaximum;
  2737.                   if(effectiveMinWidth < skinScaleMinWidth || effectiveMinHeight < skinScaleMinHeight)
  2738.                   {
  2739.                      effectiveMinWidth = skinScaleMinWidth;
  2740.                      effectiveMinHeight = skinScaleMinHeight;
  2741.                   }
  2742.                   if(effectiveWidth < effectiveMinWidth || effectiveHeight < effectiveMinHeight)
  2743.                   {
  2744.                      effectiveWidth = effectiveMinWidth;
  2745.                      effectiveHeight = effectiveMinHeight;
  2746.                   }
  2747.                   flvplayback_internal::_vc.stage.fullScreenSourceRect = new Rectangle(0,0,effectiveWidth,effectiveHeight);
  2748.                   flvplayback_internal::_vc.stage.displayState = StageDisplayState.FULL_SCREEN;
  2749.                }
  2750.                catch(re:ReferenceError)
  2751.                {
  2752.                   flvplayback_internal::_fullScreenAccel = false;
  2753.                }
  2754.                catch(re:SecurityError)
  2755.                {
  2756.                   flvplayback_internal::_fullScreenAccel = false;
  2757.                }
  2758.             }
  2759.             try
  2760.             {
  2761.                flvplayback_internal::_vc.stage.displayState = StageDisplayState.FULL_SCREEN;
  2762.             }
  2763.             catch(se:SecurityError)
  2764.             {
  2765.             }
  2766.          }
  2767.       }
  2768.       
  2769.       public function get skin() : String
  2770.       {
  2771.          return flvplayback_internal::_skin;
  2772.       }
  2773.       
  2774.       flvplayback_internal function finishAddBarControl(param1:Object) : void
  2775.       {
  2776.          var ctrl:Sprite = null;
  2777.          var ctrlData:ControlData = null;
  2778.          var e:Event = null;
  2779.          var ctrlOrEvent:Object = param1;
  2780.          if(ctrlOrEvent == null)
  2781.          {
  2782.             return;
  2783.          }
  2784.          if(ctrlOrEvent is Event)
  2785.          {
  2786.             e = Event(ctrlOrEvent);
  2787.             ctrl = Sprite(e.currentTarget);
  2788.             ctrl.removeEventListener(Event.ENTER_FRAME,flvplayback_internal::finishAddBarControl);
  2789.          }
  2790.          else
  2791.          {
  2792.             ctrl = Sprite(ctrlOrEvent);
  2793.          }
  2794.          ctrlData = ctrlDataDict[ctrl];
  2795.          try
  2796.          {
  2797.             if(ctrl["addBarControl"] is Function)
  2798.             {
  2799.                ctrl["addBarControl"]();
  2800.             }
  2801.          }
  2802.          catch(re:ReferenceError)
  2803.          {
  2804.          }
  2805.          ctrlData.origWidth = ctrl.width;
  2806.          ctrlData.origHeight = ctrl.height;
  2807.          flvplayback_internal::fixUpBar(ctrl,"progress",ctrl,"progress_mc");
  2808.          flvplayback_internal::calcBarMargins(ctrl,"progress",false);
  2809.          if(ctrlData.progress_mc != null)
  2810.          {
  2811.             flvplayback_internal::fixUpBar(ctrl,"progressBarFill",ctrlData.progress_mc,"fill_mc");
  2812.             flvplayback_internal::calcBarMargins(ctrlData.progress_mc,"fill",false);
  2813.             flvplayback_internal::calcBarMargins(ctrlData.progress_mc,"mask",false);
  2814.             if(isNaN(flvplayback_internal::_progressPercent))
  2815.             {
  2816.                flvplayback_internal::_progressPercent = flvplayback_internal::_vc.isRTMP ? 100 : 0;
  2817.             }
  2818.             flvplayback_internal::positionBar(ctrl,"progress",flvplayback_internal::_progressPercent);
  2819.          }
  2820.          flvplayback_internal::fixUpBar(ctrl,"fullness",ctrl,"fullness_mc");
  2821.          flvplayback_internal::calcBarMargins(ctrl,"fullness",false);
  2822.          if(ctrlData.fullness_mc != null)
  2823.          {
  2824.             flvplayback_internal::fixUpBar(ctrl,"fullnessBarFill",ctrlData.fullness_mc,"fill_mc");
  2825.             flvplayback_internal::calcBarMargins(ctrlData.fullness_mc,"fill",false);
  2826.             flvplayback_internal::calcBarMargins(ctrlData.fullness_mc,"mask",false);
  2827.          }
  2828.          flvplayback_internal::fixUpBar(ctrl,"hit",ctrl,"hit_mc");
  2829.          flvplayback_internal::fixUpBar(ctrl,"handle",ctrl,"handle_mc");
  2830.          flvplayback_internal::calcBarMargins(ctrl,"handle",true);
  2831.          switch(ctrlData.index)
  2832.          {
  2833.             case SEEK_BAR:
  2834.                setControl(SEEK_BAR_HANDLE,ctrlData.handle_mc);
  2835.                if(ctrlData.hit_mc != null)
  2836.                {
  2837.                   setControl(SEEK_BAR_HIT,ctrlData.hit_mc);
  2838.                }
  2839.                break;
  2840.             case VOLUME_BAR:
  2841.                setControl(VOLUME_BAR_HANDLE,ctrlData.handle_mc);
  2842.                if(ctrlData.hit_mc != null)
  2843.                {
  2844.                   setControl(VOLUME_BAR_HIT,ctrlData.hit_mc);
  2845.                }
  2846.          }
  2847.          flvplayback_internal::positionHandle(ctrl);
  2848.       }
  2849.       
  2850.       public function get fullScreenBackgroundColor() : uint
  2851.       {
  2852.          return flvplayback_internal::_fullScreenBgColor;
  2853.       }
  2854.       
  2855.       flvplayback_internal function startHandleDrag(param1:Sprite) : void
  2856.       {
  2857.          var ctrlData:ControlData = null;
  2858.          var handle:Sprite = null;
  2859.          var handleData:ControlData = null;
  2860.          var theY:Number = NaN;
  2861.          var theWidth:Number = NaN;
  2862.          var bounds:Rectangle = null;
  2863.          var ctrl:Sprite = param1;
  2864.          if(ctrl == null)
  2865.          {
  2866.             return;
  2867.          }
  2868.          ctrlData = ctrlDataDict[ctrl];
  2869.          try
  2870.          {
  2871.             if(ctrl["startHandleDrag"] is Function && Boolean(ctrl["startHandleDrag"]()))
  2872.             {
  2873.                ctrlData.isDragging = true;
  2874.                return;
  2875.             }
  2876.          }
  2877.          catch(re:ReferenceError)
  2878.          {
  2879.          }
  2880.          handle = ctrlData.handle_mc;
  2881.          if(handle == null)
  2882.          {
  2883.             return;
  2884.          }
  2885.          handleData = ctrlDataDict[handle];
  2886.          theY = ctrl.y + handleData.origY;
  2887.          theWidth = isNaN(ctrlData.origWidth) ? ctrl.width : ctrlData.origWidth;
  2888.          bounds = new Rectangle(ctrl.x + handleData.leftMargin,theY,theWidth - handleData.rightMargin,0);
  2889.          handle.startDrag(false,bounds);
  2890.          ctrlData.isDragging = true;
  2891.       }
  2892.       
  2893.       flvplayback_internal function setupBarSkinPart(param1:Sprite, param2:DisplayObject, param3:Sprite, param4:String, param5:String, param6:Boolean = false) : DisplayObject
  2894.       {
  2895.          var part:DisplayObject = null;
  2896.          var partAvatar:DisplayObject = null;
  2897.          var ctrlData:ControlData = null;
  2898.          var partData:ControlData = null;
  2899.          var ctrl:Sprite = param1;
  2900.          var avatar:DisplayObject = param2;
  2901.          var definitionHolder:Sprite = param3;
  2902.          var skinName:String = param4;
  2903.          var partName:String = param5;
  2904.          var required:Boolean = param6;
  2905.          try
  2906.          {
  2907.             part = ctrl[partName];
  2908.          }
  2909.          catch(re:ReferenceError)
  2910.          {
  2911.             part = null;
  2912.          }
  2913.          if(part == null)
  2914.          {
  2915.             try
  2916.             {
  2917.                part = flvplayback_internal::createSkin(definitionHolder,skinName);
  2918.             }
  2919.             catch(ve:VideoError)
  2920.             {
  2921.                if(required)
  2922.                {
  2923.                   throw ve;
  2924.                }
  2925.             }
  2926.             if(part != null)
  2927.             {
  2928.                flvplayback_internal::skin_mc.addChild(part);
  2929.                part.x = ctrl.x;
  2930.                part.y = ctrl.y;
  2931.                partAvatar = flvplayback_internal::layout_mc.getChildByName(skinName + "_mc");
  2932.                if(partAvatar != null)
  2933.                {
  2934.                   if(partName == "hit_mc")
  2935.                   {
  2936.                      ctrlData = ctrlDataDict[ctrl];
  2937.                      partData = new ControlData(this,part,flvplayback_internal::controls[ctrlData.index],-1);
  2938.                      partData.avatar = partAvatar;
  2939.                      ctrlDataDict[part] = partData;
  2940.                   }
  2941.                   else
  2942.                   {
  2943.                      part.x += partAvatar.x - avatar.x;
  2944.                      part.y += partAvatar.y - avatar.y;
  2945.                      part.width = partAvatar.width;
  2946.                      part.height = partAvatar.height;
  2947.                   }
  2948.                }
  2949.             }
  2950.          }
  2951.          if(required && part == null)
  2952.          {
  2953.             throw new VideoError(VideoError.MISSING_SKIN_STYLE,skinName);
  2954.          }
  2955.          return part;
  2956.       }
  2957.       
  2958.       public function get skinBackgroundAlpha() : Number
  2959.       {
  2960.          return flvplayback_internal::borderAlpha;
  2961.       }
  2962.       
  2963.       public function get volumeBarScrubTolerance() : Number
  2964.       {
  2965.          return flvplayback_internal::_volumeBarScrubTolerance;
  2966.       }
  2967.       
  2968.       public function get skinScaleMaximum() : Number
  2969.       {
  2970.          return flvplayback_internal::_skinScaleMaximum;
  2971.       }
  2972.       
  2973.       public function get skinBackgroundColor() : uint
  2974.       {
  2975.          return flvplayback_internal::borderColor;
  2976.       }
  2977.       
  2978.       public function get controlsEnabled() : Boolean
  2979.       {
  2980.          return flvplayback_internal::_controlsEnabled;
  2981.       }
  2982.       
  2983.       flvplayback_internal function handleIVPEvent(param1:IVPEvent) : void
  2984.       {
  2985.          var _loc2_:uint = 0;
  2986.          var _loc3_:int = 0;
  2987.          var _loc4_:fl.video.VideoEvent = null;
  2988.          var _loc5_:Sprite = null;
  2989.          var _loc6_:ControlData = null;
  2990.          var _loc7_:VideoProgressEvent = null;
  2991.          var _loc8_:VideoPlayerState = null;
  2992.          var _loc9_:Number = NaN;
  2993.          var _loc10_:Number = NaN;
  2994.          var _loc11_:Number = NaN;
  2995.          if(param1.vp != flvplayback_internal::_vc.visibleVideoPlayerIndex)
  2996.          {
  2997.             return;
  2998.          }
  2999.          _loc2_ = flvplayback_internal::_vc.activeVideoPlayerIndex;
  3000.          flvplayback_internal::_vc.activeVideoPlayerIndex = flvplayback_internal::_vc.visibleVideoPlayerIndex;
  3001.          switch(param1.type)
  3002.          {
  3003.             case fl.video.VideoEvent.STATE_CHANGE:
  3004.                if((_loc4_ = VideoEvent(param1)).state == VideoState.BUFFERING)
  3005.                {
  3006.                   if(!flvplayback_internal::_bufferingOn)
  3007.                   {
  3008.                      flvplayback_internal::_bufferingDelayTimer.reset();
  3009.                      flvplayback_internal::_bufferingDelayTimer.start();
  3010.                   }
  3011.                }
  3012.                else
  3013.                {
  3014.                   flvplayback_internal::_bufferingDelayTimer.reset();
  3015.                   flvplayback_internal::_bufferingOn = false;
  3016.                }
  3017.                if(_loc4_.state == VideoState.LOADING)
  3018.                {
  3019.                   flvplayback_internal::_progressPercent = flvplayback_internal::_vc.getVideoPlayer(param1.vp).isRTMP ? 100 : 0;
  3020.                   _loc3_ = SEEK_BAR;
  3021.                   while(_loc3_ <= VOLUME_BAR)
  3022.                   {
  3023.                      _loc5_ = flvplayback_internal::controls[_loc3_];
  3024.                      if(flvplayback_internal::controls[_loc3_] != null)
  3025.                      {
  3026.                         if((_loc6_ = ctrlDataDict[_loc5_]).progress_mc != null)
  3027.                         {
  3028.                            flvplayback_internal::positionBar(_loc5_,"progress",flvplayback_internal::_progressPercent);
  3029.                         }
  3030.                      }
  3031.                      _loc3_++;
  3032.                   }
  3033.                }
  3034.                _loc3_ = 0;
  3035.                while(_loc3_ < NUM_CONTROLS)
  3036.                {
  3037.                   if(flvplayback_internal::controls[_loc3_] != undefined)
  3038.                   {
  3039.                      flvplayback_internal::setEnabledAndVisibleForState(_loc3_,_loc4_.state);
  3040.                      if(_loc3_ < NUM_BUTTONS)
  3041.                      {
  3042.                         flvplayback_internal::skinButtonControl(flvplayback_internal::controls[_loc3_]);
  3043.                      }
  3044.                   }
  3045.                   _loc3_++;
  3046.                }
  3047.                break;
  3048.             case fl.video.VideoEvent.READY:
  3049.             case MetadataEvent.METADATA_RECEIVED:
  3050.                _loc3_ = 0;
  3051.                while(_loc3_ < NUM_CONTROLS)
  3052.                {
  3053.                   if(flvplayback_internal::controls[_loc3_] != undefined)
  3054.                   {
  3055.                      flvplayback_internal::setEnabledAndVisibleForState(_loc3_,flvplayback_internal::_vc.state);
  3056.                      if(_loc3_ < NUM_BUTTONS)
  3057.                      {
  3058.                         flvplayback_internal::skinButtonControl(flvplayback_internal::controls[_loc3_]);
  3059.                      }
  3060.                   }
  3061.                   _loc3_++;
  3062.                }
  3063.                if(flvplayback_internal::_vc.getVideoPlayer(param1.vp).isRTMP)
  3064.                {
  3065.                   flvplayback_internal::_progressPercent = 100;
  3066.                   _loc3_ = SEEK_BAR;
  3067.                   while(_loc3_ <= VOLUME_BAR)
  3068.                   {
  3069.                      if((_loc5_ = flvplayback_internal::controls[_loc3_]) != null)
  3070.                      {
  3071.                         if((_loc6_ = ctrlDataDict[_loc5_]).progress_mc != null)
  3072.                         {
  3073.                            flvplayback_internal::positionBar(_loc5_,"progress",flvplayback_internal::_progressPercent);
  3074.                         }
  3075.                      }
  3076.                      _loc3_++;
  3077.                   }
  3078.                }
  3079.                break;
  3080.             case fl.video.VideoEvent.PLAYHEAD_UPDATE:
  3081.                if(flvplayback_internal::controls[SEEK_BAR] != undefined && !flvplayback_internal::_vc.isLive && !isNaN(flvplayback_internal::_vc.totalTime) && flvplayback_internal::_vc.getVideoPlayer(flvplayback_internal::_vc.visibleVideoPlayerIndex).state != VideoState.SEEKING)
  3082.                {
  3083.                   if((_loc10_ = (_loc4_ = VideoEvent(param1)).playheadTime / flvplayback_internal::_vc.totalTime * 100) < 0)
  3084.                   {
  3085.                      _loc10_ = 0;
  3086.                   }
  3087.                   else if(_loc10_ > 100)
  3088.                   {
  3089.                      _loc10_ = 100;
  3090.                   }
  3091.                   _loc5_ = flvplayback_internal::controls[SEEK_BAR];
  3092.                   (_loc6_ = ctrlDataDict[_loc5_]).percentage = _loc10_;
  3093.                   flvplayback_internal::positionHandle(_loc5_);
  3094.                }
  3095.                break;
  3096.             case VideoProgressEvent.PROGRESS:
  3097.                _loc7_ = VideoProgressEvent(param1);
  3098.                flvplayback_internal::_progressPercent = _loc7_.bytesTotal <= 0 ? 100 : _loc7_.bytesLoaded / _loc7_.bytesTotal * 100;
  3099.                _loc9_ = (_loc8_ = flvplayback_internal::_vc.flvplayback_internal::videoPlayerStates[param1.vp]).minProgressPercent;
  3100.                if(!isNaN(_loc9_) && _loc9_ > flvplayback_internal::_progressPercent)
  3101.                {
  3102.                   flvplayback_internal::_progressPercent = _loc9_;
  3103.                }
  3104.                if(!isNaN(flvplayback_internal::_vc.totalTime))
  3105.                {
  3106.                   if((_loc11_ = flvplayback_internal::_vc.playheadTime / flvplayback_internal::_vc.totalTime * 100) > flvplayback_internal::_progressPercent)
  3107.                   {
  3108.                      flvplayback_internal::_progressPercent = _loc11_;
  3109.                      _loc8_.minProgressPercent = flvplayback_internal::_progressPercent;
  3110.                   }
  3111.                }
  3112.                _loc3_ = SEEK_BAR;
  3113.                while(_loc3_ <= VOLUME_BAR)
  3114.                {
  3115.                   if((_loc5_ = flvplayback_internal::controls[_loc3_]) != null)
  3116.                   {
  3117.                      if((_loc6_ = ctrlDataDict[_loc5_]).progress_mc != null)
  3118.                      {
  3119.                         flvplayback_internal::positionBar(_loc5_,"progress",flvplayback_internal::_progressPercent);
  3120.                      }
  3121.                   }
  3122.                   _loc3_++;
  3123.                }
  3124.          }
  3125.          flvplayback_internal::_vc.activeVideoPlayerIndex = _loc2_;
  3126.       }
  3127.       
  3128.       flvplayback_internal function setupButtonSkinState(param1:Sprite, param2:Sprite, param3:String, param4:DisplayObject = null) : DisplayObject
  3129.       {
  3130.          var stateSkin:DisplayObject = null;
  3131.          var ctrl:Sprite = param1;
  3132.          var definitionHolder:Sprite = param2;
  3133.          var skinName:String = param3;
  3134.          var defaultSkin:DisplayObject = param4;
  3135.          try
  3136.          {
  3137.             stateSkin = flvplayback_internal::createSkin(definitionHolder,skinName);
  3138.          }
  3139.          catch(ve:VideoError)
  3140.          {
  3141.             if(defaultSkin == null)
  3142.             {
  3143.                throw ve;
  3144.             }
  3145.             stateSkin = null;
  3146.          }
  3147.          if(stateSkin != null)
  3148.          {
  3149.             stateSkin.visible = false;
  3150.             ctrl.addChild(stateSkin);
  3151.          }
  3152.          else if(defaultSkin != null)
  3153.          {
  3154.             stateSkin = defaultSkin;
  3155.          }
  3156.          return stateSkin;
  3157.       }
  3158.       
  3159.       flvplayback_internal function layoutSkin() : void
  3160.       {
  3161.          var video_mc:DisplayObject = null;
  3162.          var i:int = 0;
  3163.          var borderRect:Rectangle = null;
  3164.          var forceSkinAutoHide:Boolean = false;
  3165.          var minWidth:Number = NaN;
  3166.          var vidWidth:Number = NaN;
  3167.          var minHeight:Number = NaN;
  3168.          var vidHeight:Number = NaN;
  3169.          if(flvplayback_internal::layout_mc == null)
  3170.          {
  3171.             return;
  3172.          }
  3173.          if(flvplayback_internal::skinLoadDelayCount < 2)
  3174.          {
  3175.             return;
  3176.          }
  3177.          video_mc = flvplayback_internal::layout_mc["video_mc"];
  3178.          if(video_mc == null)
  3179.          {
  3180.             throw new Error("No layout_mc.video_mc");
  3181.          }
  3182.          flvplayback_internal::placeholderLeft = video_mc.x;
  3183.          flvplayback_internal::placeholderRight = video_mc.x + video_mc.width;
  3184.          flvplayback_internal::placeholderTop = video_mc.y;
  3185.          flvplayback_internal::placeholderBottom = video_mc.y + video_mc.height;
  3186.          flvplayback_internal::videoLeft = flvplayback_internal::_vc.x - flvplayback_internal::_vc.registrationX;
  3187.          flvplayback_internal::videoRight = flvplayback_internal::videoLeft + flvplayback_internal::_vc.width;
  3188.          flvplayback_internal::videoTop = flvplayback_internal::_vc.y - flvplayback_internal::_vc.registrationY;
  3189.          flvplayback_internal::videoBottom = flvplayback_internal::videoTop + flvplayback_internal::_vc.height;
  3190.          if(flvplayback_internal::_fullScreen && flvplayback_internal::_fullScreenTakeOver && flvplayback_internal::border_mc != null)
  3191.          {
  3192.             borderRect = flvplayback_internal::calcLayoutControl(flvplayback_internal::border_mc);
  3193.             forceSkinAutoHide = false;
  3194.             if(borderRect.width > 0 && borderRect.height > 0)
  3195.             {
  3196.                if(borderRect.x < 0)
  3197.                {
  3198.                   flvplayback_internal::placeholderLeft += flvplayback_internal::videoLeft - borderRect.x;
  3199.                   forceSkinAutoHide = true;
  3200.                }
  3201.                if(borderRect.x + borderRect.width > flvplayback_internal::_vc.registrationWidth)
  3202.                {
  3203.                   flvplayback_internal::placeholderRight += borderRect.x + borderRect.width - flvplayback_internal::videoRight;
  3204.                   forceSkinAutoHide = true;
  3205.                }
  3206.                if(borderRect.y < 0)
  3207.                {
  3208.                   flvplayback_internal::placeholderTop += flvplayback_internal::videoTop - borderRect.y;
  3209.                   forceSkinAutoHide = true;
  3210.                }
  3211.                if(borderRect.y + borderRect.height > flvplayback_internal::_vc.registrationHeight)
  3212.                {
  3213.                   flvplayback_internal::placeholderBottom += borderRect.y + borderRect.height - flvplayback_internal::videoBottom;
  3214.                   forceSkinAutoHide = true;
  3215.                }
  3216.                if(forceSkinAutoHide)
  3217.                {
  3218.                   flvplayback_internal::_skinAutoHide = true;
  3219.                   flvplayback_internal::setupSkinAutoHide(true);
  3220.                }
  3221.             }
  3222.          }
  3223.          try
  3224.          {
  3225.             if(!isNaN(flvplayback_internal::layout_mc["minWidth"]))
  3226.             {
  3227.                minWidth = Number(flvplayback_internal::layout_mc["minWidth"]);
  3228.                vidWidth = flvplayback_internal::videoRight - flvplayback_internal::videoLeft;
  3229.                if(minWidth > 0 && minWidth > vidWidth)
  3230.                {
  3231.                   flvplayback_internal::videoLeft -= (minWidth - vidWidth) / 2;
  3232.                   flvplayback_internal::videoRight = minWidth + flvplayback_internal::videoLeft;
  3233.                }
  3234.             }
  3235.          }
  3236.          catch(re1:ReferenceError)
  3237.          {
  3238.          }
  3239.          try
  3240.          {
  3241.             if(!isNaN(flvplayback_internal::layout_mc["minHeight"]))
  3242.             {
  3243.                minHeight = Number(flvplayback_internal::layout_mc["minHeight"]);
  3244.                vidHeight = flvplayback_internal::videoBottom - flvplayback_internal::videoTop;
  3245.                if(minHeight > 0 && minHeight > vidHeight)
  3246.                {
  3247.                   flvplayback_internal::videoTop -= (minHeight - vidHeight) / 2;
  3248.                   flvplayback_internal::videoBottom = minHeight + flvplayback_internal::videoTop;
  3249.                }
  3250.             }
  3251.          }
  3252.          catch(re2:ReferenceError)
  3253.          {
  3254.          }
  3255.          i = 0;
  3256.          while(i < customClips.length)
  3257.          {
  3258.             flvplayback_internal::layoutControl(customClips[i]);
  3259.             if(customClips[i] == flvplayback_internal::border_mc)
  3260.             {
  3261.                flvplayback_internal::bitmapCopyBorder();
  3262.             }
  3263.             i++;
  3264.          }
  3265.          i = 0;
  3266.          while(i < NUM_CONTROLS)
  3267.          {
  3268.             flvplayback_internal::layoutControl(flvplayback_internal::controls[i]);
  3269.             i++;
  3270.          }
  3271.       }
  3272.       
  3273.       public function set bufferingDelayInterval(param1:Number) : void
  3274.       {
  3275.          if(flvplayback_internal::_bufferingDelayTimer.delay == param1)
  3276.          {
  3277.             return;
  3278.          }
  3279.          flvplayback_internal::_bufferingDelayTimer.delay = param1;
  3280.       }
  3281.       
  3282.       flvplayback_internal function setEnabledAndVisibleForState(param1:int, param2:String) : void
  3283.       {
  3284.          var _loc3_:int = 0;
  3285.          var _loc4_:String = null;
  3286.          var _loc5_:Sprite = null;
  3287.          var _loc6_:ControlData = null;
  3288.          var _loc7_:Boolean = false;
  3289.          var _loc8_:ControlData = null;
  3290.          var _loc9_:ControlData = null;
  3291.          var _loc10_:ControlData = null;
  3292.          var _loc11_:ControlData = null;
  3293.          _loc3_ = int(flvplayback_internal::_vc.activeVideoPlayerIndex);
  3294.          flvplayback_internal::_vc.activeVideoPlayerIndex = flvplayback_internal::_vc.visibleVideoPlayerIndex;
  3295.          if((_loc4_ = param2) == VideoState.BUFFERING && !flvplayback_internal::_bufferingOn)
  3296.          {
  3297.             _loc4_ = VideoState.PLAYING;
  3298.          }
  3299.          if((_loc5_ = flvplayback_internal::controls[param1]) == null)
  3300.          {
  3301.             return;
  3302.          }
  3303.          if((_loc6_ = ctrlDataDict[_loc5_]) == null)
  3304.          {
  3305.             return;
  3306.          }
  3307.          switch(param1)
  3308.          {
  3309.             case VOLUME_BAR:
  3310.             case VOLUME_BAR_HANDLE:
  3311.             case VOLUME_BAR_HIT:
  3312.                _loc6_.enabled = true;
  3313.                break;
  3314.             case FULL_SCREEN_ON_BUTTON:
  3315.                _loc6_.enabled = !flvplayback_internal::_fullScreen;
  3316.                if(flvplayback_internal::controls[FULL_SCREEN_BUTTON] != undefined)
  3317.                {
  3318.                   _loc5_.visible = _loc6_.enabled;
  3319.                }
  3320.                break;
  3321.             case FULL_SCREEN_OFF_BUTTON:
  3322.                _loc6_.enabled = flvplayback_internal::_fullScreen;
  3323.                if(flvplayback_internal::controls[FULL_SCREEN_BUTTON] != undefined)
  3324.                {
  3325.                   _loc5_.visible = _loc6_.enabled;
  3326.                }
  3327.                break;
  3328.             case MUTE_ON_BUTTON:
  3329.                _loc6_.enabled = !flvplayback_internal::_isMuted;
  3330.                if(flvplayback_internal::controls[MUTE_BUTTON] != undefined)
  3331.                {
  3332.                   _loc5_.visible = _loc6_.enabled;
  3333.                }
  3334.                break;
  3335.             case MUTE_OFF_BUTTON:
  3336.                _loc6_.enabled = flvplayback_internal::_isMuted;
  3337.                if(flvplayback_internal::controls[MUTE_BUTTON] != undefined)
  3338.                {
  3339.                   _loc5_.visible = _loc6_.enabled;
  3340.                }
  3341.                break;
  3342.             default:
  3343.                switch(_loc4_)
  3344.                {
  3345.                   case VideoState.LOADING:
  3346.                   case VideoState.CONNECTION_ERROR:
  3347.                      _loc6_.enabled = false;
  3348.                      break;
  3349.                   case VideoState.DISCONNECTED:
  3350.                      _loc6_.enabled = flvplayback_internal::_vc.source != null && flvplayback_internal::_vc.source != "";
  3351.                      break;
  3352.                   case VideoState.SEEKING:
  3353.                      break;
  3354.                   default:
  3355.                      _loc6_.enabled = true;
  3356.                }
  3357.          }
  3358.          switch(param1)
  3359.          {
  3360.             case SEEK_BAR:
  3361.                switch(_loc4_)
  3362.                {
  3363.                   case VideoState.STOPPED:
  3364.                   case VideoState.PLAYING:
  3365.                   case VideoState.PAUSED:
  3366.                   case VideoState.REWINDING:
  3367.                   case VideoState.SEEKING:
  3368.                      _loc6_.enabled = true;
  3369.                      break;
  3370.                   case VideoState.BUFFERING:
  3371.                      _loc6_.enabled = !flvplayback_internal::_bufferingBarHides || flvplayback_internal::controls[BUFFERING_BAR] == undefined;
  3372.                      break;
  3373.                   default:
  3374.                      _loc6_.enabled = false;
  3375.                }
  3376.                if(_loc6_.enabled)
  3377.                {
  3378.                   _loc6_.enabled = !isNaN(flvplayback_internal::_vc.totalTime);
  3379.                }
  3380.                if(_loc6_.handle_mc != null)
  3381.                {
  3382.                   (_loc8_ = ctrlDataDict[_loc6_.handle_mc]).enabled = _loc6_.enabled;
  3383.                   _loc6_.handle_mc.visible = _loc8_.enabled;
  3384.                }
  3385.                if(_loc6_.hit_mc != null)
  3386.                {
  3387.                   (_loc9_ = ctrlDataDict[_loc6_.hit_mc]).enabled = _loc6_.enabled;
  3388.                   _loc6_.hit_mc.visible = _loc9_.enabled;
  3389.                }
  3390.                _loc7_ = !flvplayback_internal::_bufferingBarHides || _loc6_.enabled || flvplayback_internal::controls[BUFFERING_BAR] == undefined || !flvplayback_internal::controls[BUFFERING_BAR].visible;
  3391.                _loc5_.visible = _loc7_;
  3392.                if(_loc6_.progress_mc != null)
  3393.                {
  3394.                   _loc6_.progress_mc.visible = _loc7_;
  3395.                   if((_loc10_ = ctrlDataDict[_loc6_.progress_mc]).fill_mc != null)
  3396.                   {
  3397.                      _loc10_.fill_mc.visible = _loc7_;
  3398.                   }
  3399.                }
  3400.                if(_loc6_.fullness_mc != null)
  3401.                {
  3402.                   _loc6_.fullness_mc.visible = _loc7_;
  3403.                   if((_loc11_ = ctrlDataDict[_loc6_.fullness_mc]).fill_mc != null)
  3404.                   {
  3405.                      _loc11_.fill_mc.visible = _loc7_;
  3406.                   }
  3407.                }
  3408.                break;
  3409.             case BUFFERING_BAR:
  3410.                switch(_loc4_)
  3411.                {
  3412.                   case VideoState.STOPPED:
  3413.                   case VideoState.PLAYING:
  3414.                   case VideoState.PAUSED:
  3415.                   case VideoState.REWINDING:
  3416.                   case VideoState.SEEKING:
  3417.                      _loc6_.enabled = false;
  3418.                      break;
  3419.                   default:
  3420.                      _loc6_.enabled = true;
  3421.                }
  3422.                _loc5_.visible = _loc6_.enabled;
  3423.                if(_loc6_.fill_mc != null)
  3424.                {
  3425.                   _loc6_.fill_mc.visible = _loc6_.enabled;
  3426.                }
  3427.                break;
  3428.             case PAUSE_BUTTON:
  3429.                switch(_loc4_)
  3430.                {
  3431.                   case VideoState.DISCONNECTED:
  3432.                   case VideoState.STOPPED:
  3433.                   case VideoState.PAUSED:
  3434.                   case VideoState.REWINDING:
  3435.                      _loc6_.enabled = false;
  3436.                      break;
  3437.                   case VideoState.PLAYING:
  3438.                      _loc6_.enabled = true;
  3439.                      break;
  3440.                   case VideoState.BUFFERING:
  3441.                      _loc6_.enabled = !flvplayback_internal::_bufferingBarHides || flvplayback_internal::controls[BUFFERING_BAR] == undefined;
  3442.                }
  3443.                if(flvplayback_internal::controls[PLAY_PAUSE_BUTTON] != undefined)
  3444.                {
  3445.                   _loc5_.visible = _loc6_.enabled;
  3446.                }
  3447.                break;
  3448.             case PLAY_BUTTON:
  3449.                switch(_loc4_)
  3450.                {
  3451.                   case VideoState.PLAYING:
  3452.                      _loc6_.enabled = false;
  3453.                      break;
  3454.                   case VideoState.STOPPED:
  3455.                   case VideoState.PAUSED:
  3456.                      _loc6_.enabled = true;
  3457.                      break;
  3458.                   case VideoState.BUFFERING:
  3459.                      _loc6_.enabled = !flvplayback_internal::_bufferingBarHides || flvplayback_internal::controls[BUFFERING_BAR] == undefined;
  3460.                }
  3461.                if(flvplayback_internal::controls[PLAY_PAUSE_BUTTON] != undefined)
  3462.                {
  3463.                   _loc5_.visible = !flvplayback_internal::controls[PAUSE_BUTTON].visible;
  3464.                }
  3465.                break;
  3466.             case STOP_BUTTON:
  3467.                switch(_loc4_)
  3468.                {
  3469.                   case VideoState.DISCONNECTED:
  3470.                   case VideoState.STOPPED:
  3471.                      _loc6_.enabled = false;
  3472.                      break;
  3473.                   case VideoState.PAUSED:
  3474.                   case VideoState.PLAYING:
  3475.                   case VideoState.BUFFERING:
  3476.                      _loc6_.enabled = true;
  3477.                }
  3478.                break;
  3479.             case BACK_BUTTON:
  3480.             case FORWARD_BUTTON:
  3481.                switch(_loc4_)
  3482.                {
  3483.                   case VideoState.BUFFERING:
  3484.                      _loc6_.enabled = !flvplayback_internal::_bufferingBarHides || flvplayback_internal::controls[BUFFERING_BAR] == undefined;
  3485.                }
  3486.          }
  3487.          _loc5_.mouseEnabled = _loc6_.enabled;
  3488.          flvplayback_internal::_vc.activeVideoPlayerIndex = _loc3_;
  3489.       }
  3490.       
  3491.       public function set fullScreenTakeOver(param1:Boolean) : void
  3492.       {
  3493.          var v:Boolean = param1;
  3494.          if(flvplayback_internal::_fullScreenTakeOver != v)
  3495.          {
  3496.             flvplayback_internal::_fullScreenTakeOver = v;
  3497.             if(flvplayback_internal::_fullScreenTakeOver)
  3498.             {
  3499.                flvplayback_internal::enterFullScreenTakeOver();
  3500.             }
  3501.             else
  3502.             {
  3503.                if(flvplayback_internal::_vc.stage != null && flvplayback_internal::_fullScreen && flvplayback_internal::_fullScreenAccel)
  3504.                {
  3505.                   try
  3506.                   {
  3507.                      flvplayback_internal::_vc.stage.displayState = StageDisplayState.NORMAL;
  3508.                   }
  3509.                   catch(se:SecurityError)
  3510.                   {
  3511.                   }
  3512.                }
  3513.                flvplayback_internal::exitFullScreenTakeOver();
  3514.             }
  3515.          }
  3516.       }
  3517.       
  3518.       flvplayback_internal function enterFullScreenTakeOver() : void
  3519.       {
  3520.          var i:int = 0;
  3521.          var fullScreenBG:Sprite = null;
  3522.          var vp:VideoPlayer = null;
  3523.          if(!flvplayback_internal::_fullScreen || flvplayback_internal::cacheFLVPlaybackParent != null)
  3524.          {
  3525.             return;
  3526.          }
  3527.          flvplayback_internal::_vc.removeEventListener(LayoutEvent.LAYOUT,flvplayback_internal::handleLayoutEvent);
  3528.          flvplayback_internal::_vc.removeEventListener(AutoLayoutEvent.AUTO_LAYOUT,flvplayback_internal::handleLayoutEvent);
  3529.          flvplayback_internal::_vc.removeEventListener(Event.ADDED_TO_STAGE,flvplayback_internal::handleEvent);
  3530.          flvplayback_internal::_vc.stage.removeEventListener(FullScreenEvent.FULL_SCREEN,flvplayback_internal::handleFullScreenEvent);
  3531.          try
  3532.          {
  3533.             flvplayback_internal::cacheFLVPlaybackScaleMode = new Array();
  3534.             flvplayback_internal::cacheFLVPlaybackAlign = new Array();
  3535.             i = 0;
  3536.             while(i < flvplayback_internal::_vc.flvplayback_internal::videoPlayers.length)
  3537.             {
  3538.                vp = flvplayback_internal::_vc.flvplayback_internal::videoPlayers[i] as VideoPlayer;
  3539.                if(vp != null)
  3540.                {
  3541.                   flvplayback_internal::cacheFLVPlaybackScaleMode[i] = vp.scaleMode;
  3542.                   flvplayback_internal::cacheFLVPlaybackAlign[i] = vp.align;
  3543.                }
  3544.                i++;
  3545.             }
  3546.             flvplayback_internal::cacheFLVPlaybackParent = flvplayback_internal::_vc.parent;
  3547.             flvplayback_internal::cacheFLVPlaybackIndex = flvplayback_internal::_vc.parent.getChildIndex(flvplayback_internal::_vc);
  3548.             flvplayback_internal::cacheFLVPlaybackLocation = new Rectangle(flvplayback_internal::_vc.registrationX,flvplayback_internal::_vc.registrationY,flvplayback_internal::_vc.registrationWidth,flvplayback_internal::_vc.registrationHeight);
  3549.             if(!flvplayback_internal::_fullScreenAccel)
  3550.             {
  3551.                flvplayback_internal::cacheStageAlign = flvplayback_internal::_vc.stage.align;
  3552.                flvplayback_internal::cacheStageScaleMode = flvplayback_internal::_vc.stage.scaleMode;
  3553.                flvplayback_internal::_vc.stage.align = StageAlign.TOP_LEFT;
  3554.                flvplayback_internal::_vc.stage.scaleMode = StageScaleMode.NO_SCALE;
  3555.             }
  3556.             flvplayback_internal::_vc.align = VideoAlign.CENTER;
  3557.             flvplayback_internal::_vc.scaleMode = VideoScaleMode.MAINTAIN_ASPECT_RATIO;
  3558.             flvplayback_internal::_vc.registrationX = 0;
  3559.             flvplayback_internal::_vc.registrationY = 0;
  3560.             flvplayback_internal::_vc.setSize(flvplayback_internal::_vc.stage.stageWidth,flvplayback_internal::_vc.stage.stageHeight);
  3561.             if(flvplayback_internal::_vc.stage != flvplayback_internal::_vc.parent)
  3562.             {
  3563.                flvplayback_internal::_vc.stage.addChild(flvplayback_internal::_vc);
  3564.             }
  3565.             else
  3566.             {
  3567.                flvplayback_internal::_vc.stage.setChildIndex(flvplayback_internal::_vc,flvplayback_internal::_vc.stage.numChildren - 1);
  3568.             }
  3569.             fullScreenBG = Sprite(flvplayback_internal::_vc.getChildByName("fullScreenBG"));
  3570.             if(fullScreenBG == null)
  3571.             {
  3572.                fullScreenBG = new Sprite();
  3573.                fullScreenBG.name = "fullScreenBG";
  3574.                flvplayback_internal::_vc.addChildAt(fullScreenBG,0);
  3575.             }
  3576.             else
  3577.             {
  3578.                flvplayback_internal::_vc.setChildIndex(fullScreenBG,0);
  3579.             }
  3580.             fullScreenBG.graphics.beginFill(flvplayback_internal::_fullScreenBgColor);
  3581.             fullScreenBG.graphics.drawRect(0,0,flvplayback_internal::_vc.stage.stageWidth,flvplayback_internal::_vc.stage.stageHeight);
  3582.             flvplayback_internal::layoutSkin();
  3583.             flvplayback_internal::setupSkinAutoHide(false);
  3584.          }
  3585.          catch(err:Error)
  3586.          {
  3587.             flvplayback_internal::cacheFLVPlaybackParent = null;
  3588.          }
  3589.          flvplayback_internal::_vc.addEventListener(LayoutEvent.LAYOUT,flvplayback_internal::handleLayoutEvent);
  3590.          flvplayback_internal::_vc.addEventListener(AutoLayoutEvent.AUTO_LAYOUT,flvplayback_internal::handleLayoutEvent);
  3591.          flvplayback_internal::_vc.addEventListener(Event.ADDED_TO_STAGE,flvplayback_internal::handleEvent);
  3592.          flvplayback_internal::_vc.stage.addEventListener(FullScreenEvent.FULL_SCREEN,flvplayback_internal::handleFullScreenEvent);
  3593.       }
  3594.       
  3595.       public function set seekBarScrubTolerance(param1:Number) : void
  3596.       {
  3597.          flvplayback_internal::_seekBarScrubTolerance = param1;
  3598.       }
  3599.       
  3600.       flvplayback_internal function cleanupHandle(param1:Object) : void
  3601.       {
  3602.          var e:Event = null;
  3603.          var ctrl:Sprite = null;
  3604.          var ctrlData:ControlData = null;
  3605.          var ctrlOrEvent:Object = param1;
  3606.          try
  3607.          {
  3608.             if(ctrlOrEvent is Event)
  3609.             {
  3610.                e = Event(ctrlOrEvent);
  3611.             }
  3612.             ctrl = e == null ? Sprite(ctrlOrEvent) : Sprite(e.currentTarget);
  3613.             ctrlData = ctrlDataDict[ctrl];
  3614.             if(ctrlData == null || e == null)
  3615.             {
  3616.                ctrl.removeEventListener(Event.REMOVED_FROM_STAGE,flvplayback_internal::cleanupHandle,false);
  3617.                if(ctrlData == null)
  3618.                {
  3619.                   return;
  3620.                }
  3621.             }
  3622.             ctrl.removeEventListener(Event.ENTER_FRAME,flvplayback_internal::finishAddBarControl);
  3623.             if(ctrlData.handle_mc != null)
  3624.             {
  3625.                if(ctrlData.handle_mc.parent != null)
  3626.                {
  3627.                   ctrlData.handle_mc.parent.removeChild(ctrlData.handle_mc);
  3628.                }
  3629.                delete ctrlDataDict[ctrlData.handle_mc];
  3630.                ctrlData.handle_mc = null;
  3631.             }
  3632.             if(ctrlData.hit_mc != null)
  3633.             {
  3634.                if(ctrlData.hit_mc.parent != null)
  3635.                {
  3636.                   ctrlData.hit_mc.parent.removeChild(ctrlData.hit_mc);
  3637.                }
  3638.                delete ctrlDataDict[ctrlData.hit_mc];
  3639.                ctrlData.hit_mc = null;
  3640.             }
  3641.          }
  3642.          catch(err:Error)
  3643.          {
  3644.          }
  3645.       }
  3646.    }
  3647. }
  3648.